时间:2015-09-05 22:11:21

标签: javascript jquery html

我正在尝试将页面上给定单词的所有实例更改为另一个单词。使用我现在使用的脚本,单词被更改,但随后也会显示javascript。我做错了什么?

<html>
<head>
</head>
<body>
This is a test of finding a word and changing it.
</body>
<script type="text/javascript" src="jquery-2.1.4.min.js"></script>
<script type="text/javascript">
var $els = $(document.body); 
$els.each(function(){ 
$(this).html($(this).text().replace(/word/g, 'banana')); 
});
</script>
</html>

它呈现为:

  

这是查找单词并进行更改的测试。 var $ els =   $(document.body的); $ els.each(函数(){   $(this).html($(this).text()。replace(/ banana / g,'banana')); });

3 个答案:

答案 0 :(得分:4)

那是因为你在页面中有脚本。您已将#mapa div{overflow:initial;} 标记放在script标记之外,但您无法拥有任何内容,因此浏览器无论如何都会将其放在body元素中。

由于body元素位于script元素内,因此使用body方法获得的文本也将包含脚本文本,但不包含脚本标记,因此当您放置时它返回text元素,它将是纯文本,而不是脚本。

将脚本改为body标记:

head

注意:通常您会使用相同的方法来获取和放置文本,因此请同时使用<!DOCTYPE html> <html> <head> <title>A valid document has a title</title> <script type="text/javascript" src="jquery-2.1.4.min.js"></script> <script type="text/javascript"> $(function(){ var $els = $(document.body); $els.each(function(){ $(this).html($(this).text().replace(/word/g, 'banana')); }); }); </script> </head> <body> This is a test of finding a word and changing it. </body> </html> 方法或text方法。

相关:请参阅有关仅在页面中的文本节点中替换文本的问题:How to replace text using jQuery (or plain JS) without breaking any events?

答案 1 :(得分:2)

您的代码是:

  1. 获取body元素
  2. 将正文的整个内容(包括浏览器恢复后的脚本本身形成无效的HTML)转换为纯文本(因此,如果正文中有任何元素,您将丢弃它们此时)
  3. 修改该文字
  4. 将该文本视为HTML并用它替换整个身体
  5. 要以合理的方式解决问题,您只需要触摸文本节点(避免脚本元素中的节点),这样就不会重写页面上的任何元素以及文本。

    首先你必须get all the text nodes,然后循环它们来修改它们。

    hello word NULL Good Morning (good)
    
    E����[�s^� (garbage)    // Why am I getting this but not with predefine fgets?
    
    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        WebControl.DisabledCssClass = "";
    }
    

答案 2 :(得分:0)

我有类似的问题,但是在非常特殊的情况下-我需要在jQuery灯箱中显示一些内容,但也需要在其中执行一些js代码。 它已正确执行,但由于灯箱的实现方式也显示在灯箱中-当我关闭开头部分的js脚本时,它的工作方式相同。

我找到了一个简单的解决方案-也许不是最优雅的解决方案,但是可以肯定地使用它。 我用非显示样式将js脚本包含在div / span中-或多或少,如下所示:

<div style="display:none;"><script type="text/javascript">MyFunction(document.getElementById('MyID'));</script></div>

也许您会发现它在类似情况下很有用。