无法设置未定义的属性“onclick”-代码有效,但会出现错误
2017-11-23
58
控制台中显示此错误,但代码正常运行:
Uncaught TypeError: Cannot set property 'onclick' of undefined
如何修复此错误?
var buttons = document.getElementsByTagName("button");
var buttonsCount = buttons.length;
for (var i = 0; i <= buttonsCount; i += 1) {
buttons[i].onclick = function(e) {
if (this.id == "plus") {
var pret_unitar_euro = $(this).closest("tr").find("input[name='pret_unitar_euro']").val($(this).closest("tr").find("input[name='input_value']").val() * $(this).closest("tr").find("input[name='pret_unitar_euro_h']").val());
var pret_unitar_lei = $(this).closest("tr").find("input[name='pret_unitar_lei']").val($(this).closest("tr").find("input[name='input_value']").val() * $(this).closest("tr").find("input[name='pret_unitar_lei_h']").val());
var pret_total_euro = $(this).closest("tr").find("input[name='pret_total_euro']").val($(this).closest("tr").find("input[name='input_value']").val() * $(this).closest("tr").find("input[name='pret_total_euro_h']").val());
var pret_total_lei = $(this).closest("tr").find("input[name='pret_total_lei']").val($(this).closest("tr").find("input[name='input_value']").val() * $(this).closest("tr").find("input[name='pret_total_lei_h']").val());
} else if (this.id == "minus") {
var pret_unitar_euro = $(this).closest("tr").find("input[name='pret_unitar_euro']").val($(this).closest("tr").find("input[name='pret_unitar_euro_h']").val() * $(this).closest("tr").find("input[name='input_value']").val());
var pret_unitar_lei = $(this).closest("tr").find("input[name='pret_unitar_lei']").val($(this).closest("tr").find("input[name='pret_unitar_lei_h']").val() * $(this).closest("tr").find("input[name='input_value']").val());
var pret_total_euro = $(this).closest("tr").find("input[name='pret_total_euro']").val($(this).closest("tr").find("input[name='pret_total_euro_h']").val() * $(this).closest("tr").find("input[name='input_value']").val());
var pret_total_lei = $(this).closest("tr").find("input[name='pret_total_lei']").val($(this).closest("tr").find("input[name='pret_total_lei_h']").val() * $(this).closest("tr").find("input[name='input_value']").val());
}
};
}
<button type="button" class="minus" id="minus">-</button>
<button type="button" class="plus" id="plus">+</button>
2个回答
您的条件不正确。您在最后一次迭代中收到错误,因为
buttons[i]
是
undefined
。
使用
for (var i = 0; i < buttonsCount; i += 1) {
}
而不是
for (var i = 0; i <= buttonsCount; i += 1) {
}
由于您使用的是
jquery
,它可用于附加事件处理程序,因此不需要
for
循环。
$("button").on('click', function(e) {
//Your code
});
Satpal
2017-11-23
How to fix this error?
您需要修复 for 循环中的 条件 ,因为
for (var i = 0; i < buttonsCount; i += 1) { //using < instead of <=
因为当
i
等于
buttonCount
时,
buttons[i]
变为
undefined
,因为您尝试从数组中访问数组中没有的项目。
gurvinder372
2017-11-23