【发布时间】:2014-04-02 21:27:57
【问题描述】:
我正在做一些基本的javascripting,并正在创建一个由来自xml 的javascript 创建的3 列表。该表是通过通过 javascript 将所有数据附加到行中来创建的。
第一列有一个输入复选框,通过 javascript 创建,如果勾选该复选框,则从该行的第三列获取价格,并将所选行的所有价格相加以得出总价格。
我遇到的问题是我似乎无法参考附加信息来获取相关价格列(第三列)中的信息。
我已经附加了我用来创建正在运行的表的函数和我用来尝试将它添加到不工作的函数。
我找到了以下两篇文章 Getting access to a jquery element that was just appended to the DOM 和 How do I refer to an appended item in jQuery?,但我只使用 javascript 而不是 jquery,如果可能的话,我想要一个仅使用 javascript 的解决方案。
你能帮忙吗? - 它只是未按预期工作的 calculateBill 函数。
提前谢谢你
function addSection() {
var section = xmlDoc.getElementsByTagName("section");
for (i=0; i < section.length; i++) {
var sectionName = section[i].getAttribute("name");
var td = document.createElement("td");
td.setAttribute("colspan", "3");
td.setAttribute("class","level");
td.appendChild(document.createTextNode(sectionName));
var tr = document.createElement("tr");
tr.appendChild(td);
tbody.appendChild(tr);
var server = section.item(i).getElementsByTagName("server");
for (j=0; j < server.length; j++) {
var createTR = document.createElement("tr");
var createTD = document.createElement("td");
var createInput = document.createElement("input");
createInput.setAttribute("type", "checkbox");
createInput.setAttribute("id", "checkInput");
createTD.appendChild(createInput);
createTR.appendChild(createTD);
var item = server[j].getElementsByTagName("item")[0].innerHTML;
var createTD2 = document.createElement("td");
var createText = document.createTextNode(item);
createTD2.appendChild(createText);
createTR.appendChild(createTD2);
var price = server[j].getElementsByTagName("price")[0].innerHTML;
var createTD3 = document.createElement("td");
var createText2 = document.createTextNode("£" + price);
createTD3.appendChild(createText2);
createTR.appendChild(createTD3);
tbody.appendChild(createTR);
}
}
}
onload = addSection();
function calculateBill() {
var finalBill = 0.0;
var checkBox = document.getElementById("checkInput");
for (i=0; i < checkBox.length; i++) {
if (checkBox[i].checked) {
var parentTR = checkBox[i].parentNode;
var priceTD = parentTR.getElementsByTagName('td')[2];
finalBill += parseFloat(priceTD.firstChild.data);
}
}
return Math.round(finalBill*100.0)/100.0;
}
var button = document.getElementById("button");
button.onClick=document.forms[0].textTotal.value=calculateBill();
【问题讨论】:
标签: javascript append