r = r.replace(/<TR><TD><\/TD><\/TR>/gi, rider_html);
...在IE中不起作用,但适用于所有其他浏览器。
任何想法或替代方案?
答案 0 :(得分:0)
你可以这样做:
var rows = document.getElementsByTagName('tr');
for (var i = 0; i < rows.length; i++) {
var children = rows[i].children;
if (children.length === 1 && children[0].nodeName.toLowerCase() === 'td') {
children[0].innerHTML = someHTMLdata
}
}
请注意,这会设置表格单元格的值,而不是替换整行。如果你想做除此之外的事情,你将不得不使用DOM方法而不是innerHTML
并准确指定你真正想要的东西。
答案 1 :(得分:0)
我得出结论,变量r必须没有你期望的值,因为如果实际存在匹配,正则表达式替换应该可以正常工作。您可以在this jsFiddle中看到,如果“r”实际上匹配,则替换可以正常工作。
这是来自小提琴的代码,它显示了IE中的正确替换。
var r = "aa<TR><TD></TD></TR>bb";
var rider_html = " foo ";
r = r.replace(/<TR><TD><\/TD><\/TR>/gi, rider_html);
alert(r);
因此,如果不知道“r”的价值是什么以及它来自哪里或者了解更多关于您正在运行的IE版本的内容,我们就无法进一步诊断(在这种情况下,您可以自己尝试那个版本的小提琴。)
如果r来自文档的HTML,那么对它进行字符串匹配是一件坏事,因为IE不会保留原始HTML。相反,它会在需要时从解析的页面重新构建它,并且它会以不同的顺序(如属性),不同的属性或不引用属性,不同的大写,不同的间距等来放置...