Kelas PHP untuk jadual HTML: tugasan atribut pelik
P粉384679266
P粉384679266 2023-09-06 00:38:07
0
1
473
<p>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): </p> <p><strong>Takrifan kaedah: </strong></p> <pre class="brush:php;toolbar:false;">public function setData( tatasusunan $data, array $row_attributes = [], array $cell_attributes = [] ): bool { // kod }</pre> <p><strong>Panggil: </strong></p> <pre class="brush:php;toolbar:false;">$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 [], [], [], [] ) ) );</pra> <p>Dalam contoh ini, jadual mempunyai tujuh lajur. </p> <p>Di sini anda akan melihat output HTML. Perhatikan sifat sel bagi baris kedua dan ketiga: </p> <pre class="brush:php;toolbar:false;"><div class='table-body'> <div class='table-row'> <div class='table-row-cell'>1</div> <div class='table-row-cell'>Consumidor Final</div> <div class='table-row-cell'>Consumidor Final</div> <div class='table-row-cell'></div> <div class='table-row-cell'>1</div> <div class='table-row-cell'></div> <div class='table-row-cell'></div> </div> <div class='table-row'> <div class='table-row-cell' id='R2C1id'>2</div> <div class='table-row-cell' id='R2C2id' onclick='R2C2_onclick();'>Prueba SRL</div> <div class='table-row-cell' 0='Array' 1='Array'>Tu Prueba</div> <div class='table-row-cell' 0='Array' 1='Array'>12345678901</div> <div class='table-row-cell' 0='Array' 1='Array'>1</div> <div class='table-row-cell' 0='Array' 1='Array'></div> <div class='table-row-cell' 0='Array' 1='Array'></div> </div> <div class='table-row'> <div class='table-row-cell'>3</div> <div class='table-row-cell'>Otra Prueba SA</div> <div class='table-row-cell' id='R3C3id' selected='selected'>Prueba 2</div> <div class='table-row-cell'>12345678902</div> <div class='table-row-cell'>1</div> <div class='table-row-cell'></div> <div class='table-row-cell'></div> </div> </div></pra> <p>Ini adalah kod yang saya gunakan untuk melakukan semua ini. Saya akan menunjukkan kepada anda coretan kod untuk pemaparan sel dan cara mengendalikan sifat. </p> <p><strong>Penyampaian sel: </strong></p> <pre class="brush:php;toolbar:false;">// 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++; }</pre> <p><strong>Kaedah atribut:</strong></p> <pre class="brush:php;toolbar:false;">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 []; }</pre> <p>Apa yang salah? terima kasih. </p>
P粉384679266
P粉384679266

membalas semua(1)
P粉349222772

Nah, apabila saya menyiarkan soalan dan memilih kod, jawapannya muncul. Dalam keadaan kaedah getHtmlAttributes() 中,缺少 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