我尝试创建一些可以搜索整个网页以查找某些关键字的内容,并使用纯JavaScript将它们斜体化。我最近甚至没有尝试过任何关于JavaScript的事情(侧面跟踪),所以我不知道为什么这不起作用。我试过谷歌搜索,但没有特别的问题(我发现的一切都是试图改变元素的class
而不是基本的css属性)。我真正想知道的是为什么这不起作用。这是我到目前为止所做的:
<html>
<head>
<script>
var str = document.getElementsByTagName("*").innerHTML;
var n = str.match(/(Nautilus|Captain Nemo)/i);
n.style.fontStyle = "italic";
</script>
</head>
<body>
The Nautilus was a ship run by Captain Nemo.
</body>
</html>
应该产生结果: Nautilus 是一艘由 Nemo船长经营的船。
我没有经验的逻辑说我应该(尝试)将整个文档解析为一个大字符串,然后使用正则表达式将该字符串与关键字匹配,然后更改style.fontStyle
。
现在,就像我说的那样,由于忙碌,我现在甚至都没有触及JavaScript甚至jQuery一段时间,所以我可能会对此感到满意,但任何帮助都会非常感激!
答案 0 :(得分:5)
n
只是一个字符串。它不是页面上的节点。并且只有页面上的节点可以具有与其父项不同的样式。你不能简单地告诉字符串是斜体。它只是一个字符串,根本没有固有的相关演示信息。
要做到这一点,你必须:
<em>
元素中的文字
或者在JS中:
// get all body content as a string
var str = document.body.innerHTML;
// find all magic words and wrap them in a <em> tag
var result = str.replace(/(Nautilus|Captain Nemo)/ig, "<em>$1</em>");
// set all body content HTML with new processed content
document.body.innerHTML = result;
答案 1 :(得分:1)
var str = document.getElementsByTagName('body');
//Use g so it will be global
var regex= /(Nautilus|Captain Nemo)/ig;
str[0].innerHTML = str[0].innerHTML.replace(regex, "<i>$1</i>");