我的HTML
<tr class="g1">
<td id="saveursqte_box[]">
<div class="t">
xxxxxxxxxxxxx
<div class="r">
<div class="a">
</div>
<img src="images/saveurs/saveur_test.jpg" width="125" border=0>
</div>
</div>
</td>
<td class="i">
<input type="text" name="saveursqte[]" alt="2.95" value="" size="3" onBlur="__sumform();">
</td>
</tr>
我正在尝试做什么
我想使用javascript获取<td id="saveursqte_box[]">
的内容。
是:
<div class="t">
xxxxxxxxxxxxx
<div class="r">
<div class="a">
</div>
<img src="images/saveurs/saveur_test.jpg" width="125" border=0>
</div>
</div>
我试过这个javascript:
var saveursqte_box = document.getElementsById('saveursqte_box[]');
然后
htmltotal = htmltotal + saveursqte_box[i].innerHTML;
但javascript似乎不喜欢我: - (
答案 0 :(得分:1)
是document.getElementById没有“s”。
这个document.getElementById('saveursqte_box[]');
返回一个dom元素而不是像jQuery这样的数组。所以获取innerHTML的代码是:
htmltotal += saveursqte_box.innerHTML;
答案 1 :(得分:1)
除了@ scrappedcola关于getElementById
中没有's'的说明,您在使用元素ID中的方括号时也可能遇到问题。
我在Firefox 4中使用<td id="saveursqte_box">
运行了您的示例并且它有效,而使用<td id="saveursqte_box[]">
我得到了NULL
getElementById()
的结果。
答案 2 :(得分:0)
此外: saveursqte_box [I] 我没有定义。只需使用saveursqte_box
即可答案 3 :(得分:0)
感谢大家!我知道我的Javascript技能很低但是通过将你的答案结合在一起,我带来了这个并且它完美地工作:
htmltotal += document.getElementById('saveurmoisqte_box_' + i).innerHTML;
根据你的回答,我删除了getElementById
的“s”。我的不好:我复制了getElementsByName
,然后将Name
替换为Id
...这就是为什么那里有“s”的原因。那种可能浪费你一周时间来调试的错误......
之后,我将<td id="extrasqte_box[]">
重命名为<td id="extrasqte_box_0">
。我认为你可以像ids
那样编写names
数组(例如name="xxxx[]"
),然后迭代,但我错了。
有了它,它完美地运作!不是bea-u-tiful,但它确实有效。
我实际做的是:
我有一个包含许多项目的订单,当您填写输入(数量)时,产品的悬停图像显示在右侧...当您离开(onBLur)时,表格总数会更新,AND使用上面的函数,我得到<td>
的内容(包括悬停图像),并在“结帐部分”中放置所选项目的摘要。结果是超级干净的用户和用户友好。不方便的是我希望这对你有意义。