似たような質問がこちらにありましたが、解決策が分からず、また少し事情が違うので、再度質問させていただきたいと思いました。
PHP と JavaScript の両方を含むページがあります。PHP はデータベースから情報を取得し、それを使用してチェックボックスを作成します。このチェックボックスは、正しい書式設定のためにテーブル内にラップされています。ページにはボタンがあり、ボタンが押されると、JavaScript は PHP で作成されたものと同じフォーマットで新しいチェックボックスを作成します。チェックボックスのいずれかが押されているかどうかを確認できるコードがいくつかあります。
alert(selectedCheckBoxWrapper.firstChild.firstChild.firstChild.checked);
ご覧のとおり、コードは<table>
ラッパーの内部を調べて、チェックボックスがオンになっているかどうかを調べようとします。私が抱えている問題は、PHP で作成されたチェックボックスが JavaScript で作成されたコーンとは異なることです。
PHP チェックボックス:
<table style="visibility: visible; position: absolute; top: 104px; left: 177px; width: 150px; height: 25px;" id="obj1" border="0" name="btn_177_1_test1">
<tbody>
<tr>
<td valign="middle" width="1">
<input type="checkbox" id="obj1_child" disabled="">
</td>
<td valign="middle" style="font-size: 13px;">
<label for="obj1_child">test1</label>
</td>
</tr>
</tbody>
</table>
JavaScript チェックボックス:
<table style="visibility: visible; position: absolute; top: 216px; left: 166px; width: 150px; height: 25px;" id="obj2" border="0" name="btn_177_1_test2" >
<tr>
<td valign="middle" width="1">
<input type="checkbox" id="obj2_child" disabled="">
</td>
<td valign="middle" style="font-size: 13px;">
<label for="obj2_child">test2</label>
</td>
</tr>
</table>
PHP チェックボックスには<tbody>
タグがありますが、JavaScript にはありません。これは、コードがチェックされているかどうかを確認するためにコードを台無しにします.PHPによって生成されたチェックボックスを見つけようとすると、チェックされたチェックボックスを見つけることができません.
チェックボックスの作成に使用するコードを含めました。
PHP 作成コード:
echo "<table style=\"visibility: " . $part['visible'] . "; position: absolute; top: " . $part['top'] . "px; left: " . $part['left'] . "px; width: " . $part['width'] . "px; height: " . $part['height'] . "px;\" id='obj" . $part['part_id'] . "' border=0 name='btn_" . $part['stacks_id'] . "_" . $part['cards_id'] . "_" . $part['name'] . "'>
<tr>
<td valign='middle' width=1>
<input type='checkbox' id=\"obj" . $part['part_id'] . "_child\" " . $part['disabled'] . ">
</td>
<td valign=\"middle\" style=\"font-size: 13px;\">
<label for=\"obj" . $part['part_id'] . "_child\">" . $part['name'] . "</label>
</td>
</tr>
</table>";
JavaScript 作成コード:
var newTableElement = document.createElement( "table" );
newTableElement.setAttribute('style', newElementStyle );
newTableElement.setAttribute('id', newElementID );
newTableElement.border = 0;
newTableElement.setAttribute('name', newElementName );
var newTableElementRow = document.createElement( "tr" );
newTableElement.appendChild( newTableElementRow );
var newTableElementCell1 = document.createElement( "td" );
newTableElementCell1.setAttribute("valign", "middle" );
newTableElementCell1.width = 1;
newTableElementRow.appendChild( newTableElementCell1 );
var newTableElementCell2 = document.createElement( "td" );
newTableElementCell2.setAttribute("valign", "middle" );
newTableElementCell2.style.fontFamily = "'Lucida Grande', Verdana, Arial, sans-serif;";
newTableElementCell2.style.fontSize = "13px";
newTableElementCell2Label = document.createElement( "label" );
newTableElementCell2Label.setAttribute('for', whatElement.getAttribute('id') + "_child" );
newTableElementCell2Label.innerHTML = innerContents;
newTableElementCell2.appendChild( newTableElementCell2Label );
newTableElementRow.appendChild( newTableElementCell2 );
var newElement = document.createElement( "input" );
newElement.setAttribute('type', 'checkbox' );
newElement.setAttribute('id', whatElement.getAttribute('id') + "_child" );
newTableElementCell1.appendChild( newElement );
newelementStyle や innerContents などの変数には、事前設定された値が含まれているだけです。
私のコードに何か問題がありますか? <tbody>
または、ブラウザにタグを追加しないように指示する方法はありますか?