1

我有一个页面有一些问题,我有一个输入来获取产品 EAN 代码并将其与产品列表进行比较,并将输入框更新为 idean_xxxxoldValue+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);"

现在的问题是带有 ID 的输入框ean_xxxxx位于表格行内,我还需要与之前的 TD-tag 中的值进行比较。我正在寻找的值被 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,而 Google 让我无法获得 Prototype 解决方案。

如果我能得到 TD 内容,我可以去掉 -tag 和任何空格来获取值 - 但是如何搜索它呢?我什至无法回到 DOM 树中,因为我要么得到 EAN 代码,要么得到这个内部文章 ID,而不是两者。所以没有inputs[i]开始。任何帮助都非常感谢,无论是原型语法还是基本 JS。

4

1 回答 1

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;
                }
            }
        }
    }
}
于 2013-03-15T15:31:07.283 回答