Insertbefore()在循环中只添加第一行,在其他行上失败
insertbefore() in loop only adds the first row, fails on the others
我正在使用Greasemonkey和JavaScript为网页编写注释。我想将相同的<td>
添加到多行,但代码仅适用于第一行。
我有:
var headings2 = document.evaluate('/html/body/table/tbody/tr/td[2]/font/center[2]/table[2]/tbody/tr/td/table/tbody/tr[position()>1]/td[2]',document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null );
var thisHeadings2 = headings2.iterateNext();
var elmAnnotation2 = document.createElement('td');
elmAnnotation2.innerHTML =
'<font size="1" face="Verdana, Arial" color="#000080">' +
'<b>Response</b>' +
'</font>';
while(thisHeadings2){
thisHeadings2.parentNode.insertBefore(elmAnnotation2.cloneNode(true), thisHeadings2);
thisHeadings2 = headings2.iterateNext();
}
感谢@dandavis。根据:http://help.dottoro.com/ljtfvvpx.php,修改文档会使迭代失效,但不会使快照集合失效。现在我用快照修复了它。解决方案如下:
var headings2 = document.evaluate('/html/body/table/tbody/tr/td[2]/font/center[2]/table[2]/tbody/tr/td/table/tbody/tr[position()>1]/td[2]',document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
var elmAnnotation2 = document.createElement('td');
elmAnnotation2.innerHTML =
'<font size="1" face="Verdana, Arial" color="#000080">' +
'<b>Response</b>' +
'</font>';
for(var i = 0; i < headings2.snapshotLength; i++){
headings2.snapshotItem(i).parentNode.insertBefore(elmAnnotation2.cloneNode(true), headings2.snapshotItem(i));
}
相关文章:
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 动态插入的表:JQuery未检测到最后一行
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- JsFiddle在分叉后描述失败
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 如何在Angular UI网格中选择下一行
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 为什么不'当单元测试出现解析错误时,我的因果报应测试会失败
- 当一些承诺失败时,如何继续使用$q.all()
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 在Jquery中单击传播失败
- 网页上失败的javascript会导致所有其他脚本失败
- 带有对象解析的响应javascript ajax失败
- 一台特定计算机的Ajax请求数据未定义/失败
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- jQuery.getJSON失败,语法错误
- Jquery幻灯片以一行左侧的图像开始,但我希望它从右端开始
- 从重复的javascript数组结果集中只获取一行
- Insertbefore()在循环中只添加第一行,在其他行上失败
- 为什么不使用分号使JavaScript在下一行代码中执行lambda函数失败?