getElementsByTagName 在 IE9 中不起作用



我想用粗体替换我的范围内容以突出显示给用户,所以我使用 getElementsByTagName 获取标签并替换为新的粗体文本,它在 chrome 中工作正常,但在 IE9 中无法正常工作

var span = document.getElementById("testId").getElementsByTagName("a")[0].getElementsByTagName("span")[0].innerHTML;
var newBoldSpan = "<b>" + span + "</b>";
document.getElementById("testId").getElementsByTagName("a")[0].innerHTML = newBoldSpan;

但是在IE 9上getElementById不返回任何标签,因此在使用getElementsByTagName("a"(时未定义谁能帮我解决这个问题?

如果有任何

无效标记(如标记中包含的其他标记(,则已知 getElementsByTagName 在 Internet Explorer 中失败。

您可能还需要查看语法以确保其正确。你能包括一个相关的html吗?

编辑:所以,我可以看到你的ID是错误的,但这对IE和Chrome都是无效的,所以它可能不是你在实际代码中运行的ID。

它可能会帮助您分解代码:

var li = document.getElementById("product_11998");
console.log('li', li);
var a = li.getElementsByTagName("a")[0];
console.log('a', a);
var span = a.getElementsByTagName("span")[0].innerHTML;
console.log('span', span);
var newBoldSpan = "<b>" + span + "</b>";
document.getElementById("product_11998").getElementsByTagName("a")[0].innerHTML = newBoldSpan;

并检查代码的运行位置。可能由于某种原因在渲染 DOM 之前它在 IE 中执行?

我已经解决了我的问题,首先使用 li.getElementsByTagName 而不是 document.getElementById,然后迭代它以找到我想要的元素并通过添加粗体标签突出显示

最新更新