【发布时间】:2013-03-04 05:48:09
【问题描述】:
我在输入产品 EAN 代码并将其与产品列表进行比较并将 ID 为 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);" 的输入上使用此代码调用
现在的问题是 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。
【问题讨论】:
-
是的,你真的应该使用id selector 来输入
-
我正在寻找的是来自
内部的 html <div><strong>...</strong> A252502</div>的A252502- 我无法更改 HTML 输出,我必须使用 JS。"A252502" 甚至不是一个元素,因此选择它很棘手。你可以试试document.getElementById('ean_'+ean).parentNode.parentNode.firstElementChild.querySelector("div strong").nextSibling(不确定原型等效)哦,我明白你的意思了。我现有的获取输入标签的代码。我尝试只使用 id 选择器,但原型让我发疯——我一定有充分的理由不使用它。也许我放弃了正确的语法。我无法从 EAN 输入中遍历,因为它要么是 EAN,要么是我作为输入而不是两者的文章编号。但我现在离我更近了。清理了我现有的代码并找到了正确的 DIV,所以我现在的输出是<strong>...</strong> A252502。现在找到一些方法来获得最后一个单词或按空格分割......
标签: javascript regex dom prototypejs