gpt4 book ai didi

javascript - .getAttribute 引起的错误

转载 作者:行者123 更新时间:2023-11-28 20:45:00 29 4
gpt4 key购买 nike

所以我有一个带有动态生成表格的页面,看起来像

<table id="enProps">
<tr>
<td class="en_US">
<input readonly="readonly" value="shipbillpayplacerequisition" type="text">
</td>
<td class="en_US">
<input class="longField" readonly="readonly" value="Ship, Bill &amp; Pay : Place Requisition" type="txt">
</td>
<td style="display: none;" class="otherIds">
<input class="identifier" readonly="readonly" value="shipbillpayplacerequisition" type="text">
</td>
<td class="keyValue">
<input class="value longField" id="shipbillpayplacerequisition" value="" type="text">
</td>
</tr>
</table>

行数可能会有所不同,输入框的值字段中存储的内容也会有所不同。我正在尝试用普通 javascript 编写一个简单的脚本(阅读:没有 JQuery 等外部库)来比较两个字段的“值”值。

到目前为止我所拥有的是

 var table = document.getElementById("enProps");
var rowCount = table.getElementsByTagName("TR").length;
var engValue;
var frenchValue;
for (var i = 0; i < rowCount; i++){
var row = table.rows[i];
var cellCount = row.cells.length;
for (var j = 0; j < cellCount; j++){
var cell = row.cells[j];
if (cell.getAttribute("class") == "en_US"){
var inputs = cell.getElementsByClassName("longField")[0].getAttribute("value");
}
}
}

每次我尝试运行此程序时都会出现错误提示

cell.getElementsByClassName("longField")[0] is undefined

奇怪的是,如果我删除 getAttribute 方法调用并使用alert 或console.log 打印输入的值,它会显示正确的元素。我尝试了多种变体,包括使用 .firstChild、.childNodes[0] 以及不串接我的方法调用。每次我收到一个错误,说 .getAttribute 不是函数或某些内容未定义,并且它总是由该行上的 .getAttribute 调用引起,更奇怪的是每次在我的选择器上调用 console.log 都会显示适当的输入标签。所以我的问题是为什么当我尝试使用 .getAttribute 来获取输入标记的“value”类的值时会出错?

最佳答案

因为你的第一个<td class="en_US">没有类 "longField" 的嵌套元素.

您需要确保找到匹配项。

 if (cell.getAttribute("class") == "en_US"){
var inputs = cell.getElementsByClassName("longField");
if (inputs.length)
inputs[0].getAttribute("value");
}

或者直接调用getElementsByClassName来自tr相反。

for (var i = 0; i < rowCount; i++){
var inputs = table.rows[i].getElementsByClassName("longField");
for (var j = 0, len = inputs.length; j < len; j++) {
inputs[j].getAttribute("value");
}
}

关于javascript - .getAttribute 引起的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652693/

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