尝试使用JavaScript查找关键字并将其斜体化

Jac*_*ton 1 html javascript css dom

我尝试创建一些可以搜索整个网页以查找某些关键字的内容,并使用纯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>
Run Code Online (Sandbox Code Playgroud)

应该产生结果:Nautilus是一艘由尼莫船长经营的船.

我没有经验的逻辑说我应该(尝试)将整个文档解析为一个大字符串,然后使用正则表达式将该字符串与关键字匹配,然后更改style.fontStyle.

现在,就像我说的那样,由于忙碌,我现在甚至没有触及JavaScript甚至jQuery一段时间,所以我可能会等待,但任何帮助都会非常感激!

Ale*_*yne 5

n这里只是一个字符串.它不是页面上的节点.并且只有页面上的节点可以具有与其父项不同的样式.你不能简单地告诉字符串是斜体.它只是一个字符串,根本没有相关的演示信息.

所以要做到这一点,你必须:

  1. 找到文字
  2. <em>为每个匹配包装元素中的文本
  3. 将结果HTML字符串插回到文档中

或者在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;
Run Code Online (Sandbox Code Playgroud)

看到它在这里工作:http://jsfiddle.net/2px7m/