function order(){
var i = 1;
while(i != 0){
if(sessionStorage.getItem("taska"+i)!=null){
var p1 = sessionStorage.getItem("taska"+i);
var p2 = sessionStorage.getItem("price"+i);
var a = document.createElement('td');
a.innerHTML = sessionStorage.getItem("id"+i);
var b = document.createElement('td');
var b1 = document.createElement('img');
b1.src = '/obrazky/taska_'+p1+'.png';
b.appendChild(b1);
var c = document.createElement('td');
c.innerHTML = p1;
var d = document.createElement('td');
d.innerHTML = ''+p2+' Kč';
var e = document.createElement('td');
var e1 = document.createElement('input');
e1.type = 'number';
e1.setAttribute("id", i);
e1.onclick = totalPrice(this);
e.appendChild(e1);
var f = document.createElement('td');
f.setAttribute("id", "total"+i);
f.innerHTML = ''+p2+' Kč';
document.getElementById('tr'+i).appendChild(a);
document.getElementById('tr'+i).appendChild(b);
document.getElementById('tr'+i).appendChild(c);
document.getElementById('tr'+i).appendChild(d);
document.getElementById('tr'+i).appendChild(e);
document.getElementById('tr'+i).appendChild(f);
i++;
}else{
i=0;
}
}
}
function totalPrice(nofitems){
var x = nofitems.id;
var y = nofitems.value*Number(sessionStorage.getItem("price"+x));
document.getElementById('total'+x).innerHTML = y+' Kč';
}
我已创建函数顺序以插入一些html元素。我希望在项目的数量增加时更改元素var f。我正在使用totalPrice函数执行此操作,但无论何时调用它,控制台都会弹出:
未捕获的TypeError:无法设置null
的属性'innerHTML'我认为,它无法通过id找到创建的元素。 谢谢你的帮助。
答案 0 :(得分:0)
首先,我在这行代码中看到了一些不对的东西:
e1.onclick = totalPrice(this);
这不会将totalPrice
函数附加到e1元素的onclick事件。此外,当前上下文中的关键字this
是指窗口对象,因此将其作为参数发送到totalPrice
函数没有任何意义它应该是这样的:
e1.onclick = totalPrice;
您还应该调整totalPrice函数以获取项目的总数并相应地计算价格
编辑:该功能应如下所示
function totalPrice(){
var x = this.id;
var y = this.value*Number(sessionStorage.getItem("price"+x));
document.getElementById('total'+x).innerHTML = y+' Kč';
}
答案 1 :(得分:0)
尝试创建文本节点并将其添加到元素f
http://www.w3schools.com/jsref/met_document_createtextnode.asp
如果还不够,请尝试换掉这一行:
f.setAttribute(“id”,“total”+ i);
这一行:
f.id =“total”+ i;
参考:
setting the id attribute of an input element dynamically in IE: alternative for setAttribute method