gpt4 book ai didi

javascript - 浏览器有时会添加

转载 作者:行者123 更新时间:2023-11-28 01:53:41 25 4
gpt4 key购买 nike

我看到了类似的问题here ,但不确定解决方案,而且情况略有不同,所以我想我会再问一次。

我的页面同时包含 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>标签?

最佳答案

使用 JavaScript 创建 table 元素时,需要插入 tbody 元素,以匹配 table 元素的结构,如下所示由 HTML 解析器创建。 HTML标记不需要有tbody标签,但是tbody元素就在那里.

因此,您只需修改 JavaScript 代码,以便在创建 table 元素后,它会创建一个 tbody 元素,使其成为 table 的子元素,然后使所有 tr 元素成为 tbody 的子元素,而不是 table

关于javascript - 浏览器有时会添加 <tbody>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19411081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com