Javascript 未捕获类型错误:无法读取属性';价值';空Java脚本的定义 var i=0; 函数addLine(){ i++; var div=document.createElement('div'); div.innerHTML+=''; div.innerHTML+=''; div.innerHTML+=''; div.innerHTML+=''; div.innerHTML+=''; div.innerHTML+=''; document.getElementById('items').appendChild(div); } 功能移除行(div){ document.getElementById('items').removeChild(div.parentNode); } 函数和(){ var q=document.getElementById('quantity')。值; var p=document.getElementById('price')。值; var结果=parseInt(q)*parseInt(p); 如果(q==“”| | p==“”){ document.getElementById('lineTotal')。值=0; } 如果(!isNaN(结果)){ document.getElementById('lineTotal')。值=结果; } }
下面是htmlJavascript 未捕获类型错误:无法读取属性';价值';空Java脚本的定义 var i=0; 函数addLine(){ i++; var div=document.createElement('div'); div.innerHTML+=''; div.innerHTML+=''; div.innerHTML+=''; div.innerHTML+=''; div.innerHTML+=''; div.innerHTML+=''; document.getElementById('items').appendChild(div); } 功能移除行(div){ document.getElementById('items').removeChild(div.parentNode); } 函数和(){ var q=document.getElementById('quantity')。值; var p=document.getElementById('price')。值; var结果=parseInt(q)*parseInt(p); 如果(q==“”| | p==“”){ document.getElementById('lineTotal')。值=0; } 如果(!isNaN(结果)){ document.getElementById('lineTotal')。值=结果; } },javascript,dynamic,row,Javascript,Dynamic,Row,下面是html var i = 0; function addLine() { i++; var div = document.createElement('div'); div.innerHTML += '<input type="text" name="description['+i+']" id="description['+i+']"/>'; div.innerHTML += '<input
var i = 0;
function addLine() {
i++;
var div = document.createElement('div');
div.innerHTML += '<input type="text" name="description['+i+']" id="description['+i+']"/>';
div.innerHTML += '<input type="text" name="quantity['+i+']" id="quantity['+i+']" onkeyup="sum();"/>';
div.innerHTML += '<input type="text" name="price['+i+']" id="price['+i+']" onkeyup="sum();"/>';
div.innerHTML += '<input type="text" name="lineTotal['+i+']" id="lineTotal['+i+']" readonly/>';
div.innerHTML += '<input type="button" onclick="removeLine(this)" value="-">';
div.innerHTML += '<input type="button" onclick="addLine();" value="+" />';
document.getElementById('items').appendChild(div);
}
function removeLine(div) {
document.getElementById('items').removeChild(div.parentNode);
}
function sum() {
var q = document.getElementById('quantity').value;
var p = document.getElementById('price').value;
var result = parseInt(q) * parseInt(p);
if(q=="" || p==""){
document.getElementById('lineTotal').value = 0;
}
if (!isNaN(result)) {
document.getElementById('lineTotal').value = result;
}
}
</script>
因此,当我尝试添加一个新的行时,它工作得非常好,没有问题
当我对html中的第一行进行计算时,它会毫无问题地完成所有计算,但是当我添加新的动态行时,我无法计算。几天来一直在试图解决这个问题,但仍然没有结果,所以我决定在这里询问
非常感谢你的帮助
非常感谢:)ID应该是唯一的
另外,我用TR替换了DIV,并添加了TD以与您的表保持一致
<tr>
<td><input type="text" name="description[]"/></td>
<td><input type="text" name="quantity[]" id="quantity[]" onkeyup="sum();"/></td>
<td><input type="text" name="price[]" id="price[]" onkeyup="sum();"/></td>
<td><input type="text" name="lineTotal[]" id="lineTotal[]" readonly /></td>
<td><input type="button" onclick="addLine();" value="+" /></td>
</tr>
var i=0;
函数addLine(){
i++;
var行=document.createElement('tr');
var td=document.createElement('td');
td.innerHTML='';
世界其他地区(td);
td=document.createElement('td');
td.innerHTML='';
世界其他地区(td);
td=document.createElement('td');
td.innerHTML='';
世界其他地区(td);
td=document.createElement('td');
td.innerHTML='';
世界其他地区(td);
td=document.createElement('td');
td.innerHTML='';
世界其他地区(td);
td=document.createElement('td');
td.innerHTML='';
世界其他地区(td);
document.getElementById('items').appendChild(行);
}
功能移除行(世界其他地区){
document.getElementById('items').removeChild(行);
}
函数和(一){
var q=document.getElementById('quantity['+i+']')。值;
var p=document.getElementById('price['+i+']')。值;
var结果=parseInt(q)*parseInt(p);
如果(q==“”| | p==“”){
document.getElementById('lineTotal['+i+']')。value=0;
}
如果(!isNaN(结果)){
document.getElementById('lineTotal['+i+']')。value=result;
}
}
我进行了一些更新,使之能够与带有TRs和TDsdone的real table一起工作:)。。如果要将所有lineTotal计算为小计输出。我该怎么做?抱歉,我对JAVA脚本编写还不太熟悉,我发现很难进行。使用for(j=0;j<table id="items">
<tr>
<td><input type="text" name="description[]"/></td>
<td><input type="text" name="quantity[]" id="quantity[0]" onkeyup="sum(0);"/></td>
<td><input type="text" name="price[]" id="price[0]" onkeyup="sum(0);"/></td>
<td><input type="text" name="lineTotal[]" id="lineTotal[0]" readonly /></td>
<td><input type="button" onclick="addLine();" value="+" /></td>
</tr>
</table>
<script>
var i = 0;
function addLine() {
i++;
var row = document.createElement('tr');
var td = document.createElement('td');
td.innerHTML = '<input type="text" name="description['+i+']" id="description['+i+']"/>';
row.appendChild(td);
td = document.createElement('td');
td.innerHTML = '<input type="text" name="quantity['+i+']" id="quantity['+i+']" onkeyup="sum('+i+');"/>';
row.appendChild(td);
td = document.createElement('td');
td.innerHTML = '<input type="text" name="price['+i+']" id="price['+i+']" onkeyup="sum('+i+');"/>';
row.appendChild(td);
td = document.createElement('td');
td.innerHTML = '<input type="text" name="lineTotal['+i+']" id="lineTotal['+i+']" readonly/>';
row.appendChild(td);
td = document.createElement('td');
td.innerHTML = '<input type="button" onclick="removeLine(this.parentNode.parentNode)" value="-">';
row.appendChild(td);
td = document.createElement('td');
td.innerHTML = '<input type="button" onclick="addLine();" value="+" />';
row.appendChild(td);
document.getElementById('items').appendChild(row);
}
function removeLine(row) {
document.getElementById('items').removeChild(row);
}
function sum(i) {
var q = document.getElementById('quantity['+i+']').value;
var p = document.getElementById('price['+i+']').value;
var result = parseInt(q) * parseInt(p);
if(q=="" || p==""){
document.getElementById('lineTotal['+i+']').value = 0;
}
if (!isNaN(result)) {
document.getElementById('lineTotal['+i+']').value = result;
}
}
</script>