[英]How can I access a select in an HTML table cell
我将选择添加到具有ID的表单元格的列中。 使用console.log,我可以看到带有给定ID的select,但是当我尝试使用ID设置框的值时,出现NULL引用错误。 盒子的正确参考是什么? 谢谢。
JavaScript的
function GetProc_Responce(r, responce) {
var table = "<tr><th>Emp</th><th>RA</th><th>PI</th><th>First Name</th><th>Last Name</th><th>Is A</th><th>Date Created</th><th>Date Modified</th></tr>";
strXml = new XMLSerializer().serializeToString(responce);
//console.log("returnString: " + strXml);
var oParser = new DOMParser();
oDOM = oParser.parseFromString(strXml, "text/xml");
//console.log(oDOM.getElementsByTagName("EmployeeID").length);
var l = oDOM.getElementsByTagName("EmployeeID").length;
for (i = 0; i <= l - 1; i++) {
a = oDOM.getElementsByTagName("Emp")[i];
_Emp = a.childNodes[0].nodeValue;
b = oDOM.getElementsByTagName("RA")[i];
_RA = b.childNodes[0].nodeValue;
c = oDOM.getElementsByTagName("PI")[i];
_PI = c.childNodes[0].nodeValue;
d = oDOM.getElementsByTagName("FirstName")[i];
_FirstName = d.childNodes[0].nodeValue;
e = oDOM.getElementsByTagName("LastName")[i];
_LastName = e.childNodes[0].nodeValue;
f = oDOM.getElementsByTagName("IsA")[i];
_IsA = f.childNodes[0].nodeValue;
g = oDOM.getElementsByTagName("DateCreated")[i];
_DateCreated = g.childNodes[0].nodeValue;
h = oDOM.getElementsByTagName("DateModified")[i];
_DateModified = h.childNodes[0].nodeValue;
table += "<tr><td>" +
a.childNodes[0].nodeValue + "</td><td>" +
b.childNodes[0].nodeValue + "</td><td>" +
c.childNodes[0].nodeValue + "</td><td>" +
d.childNodes[0].nodeValue + "</td><td>" +
e.childNodes[0].nodeValue + "</td><td>" +
//f.childNodes[0].nodeValue + "</td><td>" +
"<select id=\"s1\"><option value=\"0\">0</option><option value=\"1\">1</option></select>" + "</td><td>" +
g.childNodes[0].nodeValue + "</td><td>" +
h.childNodes[0].nodeValue + "</td></tr>";
document.getElementById('Proc').rows.item(3).cells(5).value = 1;
//OR
document.getElementById('s1').selectedValue = 1;
//NEITHER ONE WORKS
}
document.getElementById("Proc").innerHTML = table;
console.log(document.getElementById('Proc').rows(3).cells(5));
}
HTML
<div><center>
<table id="Proc"></table>
</center></div>
您必须分配唯一的ID值。 您的代码为所有代码分配了ID值s1
(在HTML中无效)。
如下更改代码以分配s0
, s1
, s2
...等。为清楚起见,我不再重复不涉及的代码:
for (i = 0; i <= l - 1; i++)
{
// ...
table += "<tr><td>" +
// ...
e.childNodes[0].nodeValue + "</td><td>" +
"<select id=\"s" + i + "\"><option value=\"0\">0</option><option value=\"1\">1</option></select>" + "</td><td>" +
// ...
}
您可以使用getElementById通过其ID访问select
元素之一:
var element = document.getElementById('s' + i);
其中, i是从0
到循环中分配的最后一个数字。
您可以通过select
元素的value
属性获取或设置其value
。 例如,要将其值设置为1,请执行以下操作:
document.getElementById('s' + i).value = '1';
document.getElementById('Proc').rows.item(3).cells(5)
引用一个td,它没有值。
document.getElementById('s1')
引用选择框
您希望document.getElementById('Proc').rows.item(3).cells(5).children[0]
引用选择
更好的方法是使用一些内置的标记查找功能,例如document.getElementById('Proc').rows[3].getElementsByTagName('select')[0]
。 然后,您不必处理选择所在的列。当然,如果该行上有多个选择,则需要做一些不同的事情。 那时,我建议将类名添加到您的选择中,以便可以使用document.getElementById('Proc').rows[3].getElementsByClassName('select1')[0]
在这里,我们将获得div对象
var div = document.getElementById('test');
在这里,我们将获得表对象
var table = div.getElementsByTagName('table')[0];
在这里,我们将新选择添加到td
table.rows[0].cells[0].innerHTML += '<select id="s2"></select>';
搜索存在选择(ID为=“ s1”)
var select_1 = table.rows[0].cells[0].getElementsByTagName('select')[0];
console.log(select_1);
搜索TD中的所有选择
var select_array = table.rows[0].cells[0].getElementsByTagName('select');
console.log(select_array);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.