我在页面上遇到一些问题,我有一个输入来获取产品EAN代码并将其与产品表格列表进行比较,并将标识为ean_xxxx
的输入框更新为oldValue+1
。我目前的代码如下:
function updateProductQty(ean) {
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
if(inputs[i].id == "ean_" + ean)
{
inputs[i].value = Number(inputs[i].value) + 1;
}
}
}
我在EAN代码onchange="updateProductQty(this.value);"
现在的问题是标识为ean_xxxxx
的输入框位于表格行内,我还需要与之前的TD标记中的值进行比较。我正在寻找的值被这样的HTML所包围:
<td>
<h5 class="title">....</h5>
<div><strong>...</strong> A252502</div>
<dl class="item-options">
<dt>...</dt>
<dd>..</dd>
</dl>
</td>
.... more <td>-tags
<td> ... <input id="ean_xxxx" .... /> ... </td>
正如您所看到的,当我找到输入标记时,我永远不知道表格中的哪一行,而我想要添加检查的值是“A252502”。
该网站使用Prototype作为js框架,我没有这方面的经验,所以我主要使用基本的JS,谷歌让我失去原型解决方案。
如果我只能获得TD内容,我可以剥离-tag和任何空格来获取值 - 但是如何搜索它?我甚至无法退回DOM树,因为我要么获得EAN代码,要么获得此内部文章ID,而不是两者。所以没有inputs[i]
开始。任何帮助都非常受欢迎,无论它是Prototype语法还是基本JS。
答案 0 :(得分:1)
我设法解决了这个问题。方法如下:
function updateProductQty(ean) {
var input = $("ean_" + ean);
if (input) {
input.value = Number(input.value) + 1;
} else {
var trs = $$('.order-tables tbody tr');
for (var i = 0; i < trs.size(); i++) {
if (trs[i].down('div')) {
if (trs[i].down('div').innerHTML.split(" ")[1] == ean) {
trs[i].down('td').next(4).down('input').value = Number(trs[i].down('td').next(4).down('input').value) + 1;
}
}
}
}
}