如何使用javascript在单击按钮时覆盖动态创建的表的行值
我有一个下拉列表,用户可以从中选择像“旧”、“新”这样的选项。根据选择的选项,我从xml查询数据并将其显示在表中 Html如何使用javascript在单击按钮时覆盖动态创建的表的行值,javascript,html,xml,xpath,Javascript,Html,Xml,Xpath,我有一个下拉列表,用户可以从中选择像“旧”、“新”这样的选项。根据选择的选项,我从xml查询数据并将其显示在表中 Html 小说标题 作者 出版年 价格 购买 要将数据添加到选项select上的表中,我正在执行以下操作:- var nodes = xmlDoc.evaluate(pathExpr, xmlDoc, nsResolver, XPathResult.ANY_TYPE, null); var result = nodes.iterateNext();
小说标题
作者
出版年
价格
购买
要将数据添加到选项select上的表中,我正在执行以下操作:-
var nodes = xmlDoc.evaluate(pathExpr, xmlDoc, nsResolver, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
while (result) {
var b= [];
var d=result.childNodes;
for(var i=0;i<d.length;i++){
if(d[i].nodeType == 1){
b.push(d[i]);
}
}
for(var p=0;p<b.length;p++){
var n = b[p];
if (n.localName== "title"){var t = n.childNodes[0].nodeValue;}
if (n.localName== "author"){var a = n.childNodes[0].nodeValue;}
if (n.localName== "year"){var y = n.childNodes[0].nodeValue;}
if (n.localName== "price"){var pr = n.childNodes[0].nodeValue;}
if (n.localName== "code"){var c = n.childNodes[0].nodeValue;}
}
$('.NovelList tr:last').after(
'<tr><td class="value">'+ t
+ '</td><td class="value">'+ a
+ '</td><td class="value">' + y
+ '</td><td class="value">' + pr
+ '</td><td class="chk"><input type="checkbox" name="chkbox" value='+'"'+c+'"'+'></td></tr>');
result = nodes.iterateNext();
}
}
var nodes=xmlDoc.evaluate(路径表达式、xmlDoc、nsResolver、XPathResult.ANY_类型,null);
var result=nodes.iterateNext();
while(结果){
var b=[];
var d=result.childNodes;
对于(var i=0;i首先,将头部和身体分开,如下所示:
<table>
<thead>
<tr>...</tr>
</thead>
<tbody>
<tr>...</tr>
</tbody>
</table>
基本上,你需要先删除DOM。感谢Fenixp的帮助。我在表中添加了header和body标记,但同时empty()不起作用,所以我最终使用了remove()
编辑后的HTML文件
<table id="NovelList" class="NovelList" border="1">
<thead>
<tr>
<th>Novel Title</th>
<th>Author</th>
<th>Publishing Year</th>
<th>Price</th>
<th>Purchase</th>
</tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
并使用
$('.NovelList tbody tr:last').after(
'<tr class="dtr"><td class="value">'+ t[0].firstChild.nodeValue
+ '</td><td class="value">'+ a[0].firstChild.nodeValue
+ '</td><td class="value">' + y[0].firstChild.nodeValue
+ '</td><td class="value">' + p[0].firstChild.nodeValue
+ '</td><td class="chk"><input type="checkbox" name="chkbox" value='+'"'+code+'"'+'></td></tr>');
$('.NovelList tbody tr:last')。之后(
''+t[0].firstChild.nodeValue
+''+a[0].firstChild.nodeValue
+''+y[0].firstChild.nodeValue
+''+p[0].firstChild.nodeValue
+ '');
是,但由于empty()方法会删除所有子节点,表的第一行的标题也会被它删除,并且不会显示任何内容。@neeti在这种情况下,请正确分隔标题和正文-将标题放在ad标记中,将正文放在tbody标记中。然后在tbody上调用empty。编辑答案。
<table id="NovelList" class="NovelList" border="1">
<thead>
<tr>
<th>Novel Title</th>
<th>Author</th>
<th>Publishing Year</th>
<th>Price</th>
<th>Purchase</th>
</tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
$('#NovelList tbody >tr.dtr').remove();
$('.NovelList tbody tr:last').after(
'<tr class="dtr"><td class="value">'+ t[0].firstChild.nodeValue
+ '</td><td class="value">'+ a[0].firstChild.nodeValue
+ '</td><td class="value">' + y[0].firstChild.nodeValue
+ '</td><td class="value">' + p[0].firstChild.nodeValue
+ '</td><td class="chk"><input type="checkbox" name="chkbox" value='+'"'+code+'"'+'></td></tr>');