我正在尝试使用此函数替换一些文本(类名)。它适用于Chrome但不适用于IE,任何想法为什么?这是实际的网站website link。
它所说的“住房”的水平菜单应该变为灰色:
<li class="mainlevel_active-fade" id="menuitem_1-fade">
应该成为
<li class="mainlevel-fade" id="menuitem_1-fade">
JavaScript的:
var divText = "";
var toReplace = '<li class="mainlevel_active-fade" id="menuitem_1-fade">';
var replacement = '<li class="mainlevel-fade" id="menuitem_1-fade">';
function findMyText(toReplace, replacement) {
if (divText.length == 0) {
divText = document.getElementById("header-left-b").innerHTML;
}
var re = new RegExp(toReplace, "ig");
var replaced = "";
if (replacement.length > 0) {
replaced = divText.replace(re, replacement);
}
else {
var Text = "<div>" + toReplace + "</div>";
replaced = divText.replace(re, Text);
}
document.getElementById("header-left-b").innerHTML = replaced;
}
findMyText(toReplace, replacement);
我最终找到了一种在不同模块中显示不同类的简单方法,因此放弃了这种尝试。谢谢你的帮助
答案 0 :(得分:0)
你确定要在这里使用正则表达式吗?您正在进行经典的纯字符串替换。另外,你真的不应该在这里使用innerHTML
。
innerHTML
可能是它不起作用的原因。我假设IE将生成与Chrome标题不同的标题HTML表示,然后找不到您的字符串。例如。 任何浏览器都可能正确序列化标记(属性的顺序未定义!):
<li id="menuitem_1-fade" class="mainlevel_active-fade">
繁荣,你的方法不再适用。
使用DOM而不是字符串操作。它更快,更可靠。
答案 1 :(得分:0)
这个怎么样..
my_li = document.getElementById('menuitem_1-fade');
my_li.className -= 'mainlevel_active-fade';
my_li.className += 'mainlevel-fade';