不能更改内部HTML

Can't change inner HTML

本文关键字:HTML 内部 不能      更新时间:2023-09-26
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元素。当物品数量增加时,我想改变元素变量f。我使用totalPrice函数来完成此操作,但无论何时调用它,控制台都会弹出:

Uncaught TypeError: Cannot set property 'innerHTML' of null

我认为,它不能通过id找到创建的元素。谢谢你的帮助。

首先,我看到这行代码有些不对劲:

  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č';
}

尝试创建一个文本节点并将其添加到元素fhttp://www.w3schools.com/jsref/met_document_createtextnode.asp

如果这还不够,那么试着换掉这一行:

f。setAttribute("id","总"+ i);

:

f。Id = "total"+i;

引用:

在IE中动态设置输入元素的id属性:setAttribute方法的替代

http://www.w3schools.com/jsref/prop_html_id.asp