我正在尝试将页面上给定单词的所有实例更改为另一个单词。使用我现在使用的脚本,单词被更改,但随后也会显示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')); });
答案 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)
您的代码是:
要以合理的方式解决问题,您只需要触摸文本节点(避免脚本元素中的节点),这样就不会重写页面上的任何元素以及文本。
首先你必须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>
也许您会发现它在类似情况下很有用。