Kelas PHP untuk jadual HTML: tugasan atribut pelik
P粉384679266
P粉384679266 2023-09-06 00:38:07
0
1
385

Dalam kelas yang membina jadual HTML, saya mempunyai kaedah ini yang menjadikan jadual. Semuanya berfungsi dengan baik kecuali untuk penetapan atribut HTML di bawah syarat tertentu (indentasi, teg penutup, perwakilan data, dll.). Apabila saya menetapkan data sel, saya memanggil setData() untuk menerima tiga parameter dan menggunakannya seperti ini. Perhatikan bagaimana saya menetapkan parameter ketiga (sifat sel):

Takrifan kaedah:

public function setData( tatasusunan $data, array $row_attributes = [], array $cell_attributes = [] ): bool { // kod }

Panggil:

$table->setData( $penomboran->set hasil, [], // atribut baris array ( // atribut sel array(), // baris 1 (indeks 0) tatasusunan( // baris2 (indeks 1) ["id"=>"R2C1id"], // baris 2, sel 1 ["id"=>"R2C2id", "onclick"=>"R2C2_onclick();"], // baris 2, sel 2 ), tatasusunan( // baris 3 [], [], ["id"=>"R3C3id", "dipilih"=>"dipilih"], // baris 3, sel 3 [], [], [], [] ) ) ); 

Dalam contoh ini, jadual mempunyai tujuh lajur.

Di sini anda akan melihat output HTML. Perhatikan sifat sel bagi baris kedua dan ketiga:

1
Consumidor Final
Consumidor Final
1
2
Prueba SRL
Tu Prueba
12345678901
1
3
Otra Prueba SA
Prueba 2
12345678902
1

Ini adalah kod yang saya gunakan untuk melakukan semua ini. Saya akan menunjukkan kepada anda coretan kod untuk pemaparan sel dan cara mengendalikan sifat.

Penyampaian sel:

// proses sel $row_counter = 0; foreach ($ini->data sebagai $data) { // baris $row_build = ""; $cell_counter = 0; foreach ($data sebagai $cell_data) { // sel jika ($cell_counter < $col_count) { $row_build .= $this->getHtmlDiv( $html_cell_class, $data_sel ?? "", $this->getHtmlAttributes("sel", $row_counter, $cell_counter), 3 ); } $cell_counter++; } // $cell_counter++; // lengkapkan sel kosong untuk mengekalkan row:hover pada baris penuh manakala ($cell_counter < $col_count) { $row_build .= $this->getHtmlDiv( $html_cell_class, "", $this->getHtmlAttributes("sel", $row_counter, $cell_counter), 3 ); $cell_counter++; } $body_build .= $this->getHtmlDiv( $html_row_class, $row_build, $this->getHtmlAttributes("baris", $row_counter, 0), 2, benar ); $row_counter++; }

Kaedah atribut:

fungsi peribadi getHtmlAttributes(rentetan $bahagian, int $row, int $column): tatasusunan { if (count($this->html_attributes[$section]) > 0) { if (array_key_exists($row, $this->html_attributes[$section])) { jika ($bahagian === "sel") { if (array_key_exists($column, $this->html_attributes[$section][$row])) { kembalikan $this->html_attributes[$section][$row][$column]; } } kembalikan $this->html_attributes[$section][$row]; } } kembali []; }

Apa yang salah? terima kasih.

P粉384679266
P粉384679266

membalas semua (1)
P粉349222772

Nah, apabila saya menyiarkan soalan dan memilih kod, jawapannya muncul. Dalam keadaan kaedahgetHtmlAttributes()中,缺少else.

private function getHtmlAttributes(string $section, int $row, int $column): array { if (count($this->html_attributes[$section]) > 0) { if (array_key_exists($row, $this->html_attributes[$section])) { if ($section === "cell") { if (array_key_exists($column, $this->html_attributes[$section][$row])) { return $this->html_attributes[$section][$row][$column]; } else { // <-- this return []; } } return $this->html_attributes[$section][$row]; } } return []; }
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!