我有一个带有一些文字的文本区域(假设它说“快速布朗的狐狸在懒惰的狗身上跳过”)。当我按下按钮时,textarea的内容会发生变化,以替换单词" BROWN"用另一个词(例如" RED")
<textarea id="text3" >THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.</textarea>
<input type="button" value="Click here" onclick="myFunction();"/>
<script type="application/javascript">
function myFunction() {
var textElem = document.getElementById("text3");
var newText = textElem.replace("BROWN", "RED");
newText = textElem.replace("FOX", "RABBIT");
newText = textElem.replace("JUMPED", "LEAPED");
newText = textElem.replace("LAZY", "SLEEPING");
textElem.value = newText.value;
}
</script>
代码似乎不起作用。我试过看看函数是否正常调用以及变量是否为字符串。
编辑: 该功能现在为:
function myFunction() {
var textElem = document.getElementById("text3").value;
newText = textElem.replace("BROWN", "RED");
newText = textElem.replace("FOX", "RABBIT");
newText = textElem.replace("JUMPED", "LEAPED");
newText = textElem.replace("LAZY", "SLEEPING");
alert(newText); /*I added this to see what the value of newText is*/
textElem = newText;
}
通过警报,我注意到newText没有从原来改变。 textElem.replace有什么问题吗?
答案 0 :(得分:5)
你做错了。
replace()方法返回一个新字符串,其中一个或所有匹配的模式由替换替换。
此方法不会更改调用它的String对象。它只返回一个新字符串。
因此,在您的情况下,您始终在textElem
上调用此功能,这不会受到影响,您最终会获得上次替换的结果。
var newText = textElem.replace("BROWN", "RED");//textElem is not changed
newText = textElem.replace("FOX", "RABBIT");//textElem is not changed and hence you will not get the above replacement
因此,您应该在newText上调用替换方法并将其分配给自己,如下所示
var newText = textElem.replace("BROWN", "RED");
newText = newText.replace("FOX", "RABBIT");//replace and assign to the same string
答案 1 :(得分:1)
您已将textElem设置为对象而非文本值。您可以改用此代码:
<script type="application/javascript">
function myFunction() {
var textElem = document.getElementById("text3").value;
var newText = textElem.replace("BROWN", "RED");
newText = newText.replace("FOX", "RABBIT");
newText = newText.replace("JUMPED", "LEAPED");
newText = newText.replace("LAZY", "SLEEPING");
document.getElementById("text3").value = newText;
}
</script>
答案 2 :(得分:1)
正如Guffa所说:你需要使用元素的文本。不是元素本身。 replace()函数适用于字符串。因此,您必须将元素的文本保存在变量中。然后你可以改变文字。替换完所有单词后,将新文本设置为元素。
function myFunction() {
var textElem = document.getElementById("text3");
var newText = textElem.value;
newText = newText.replace("BROWN", "RED");
newText = newText.replace("FOX", "RABBIT");
newText = newText.replace("JUMPED", "LEAPED");
newText = newText.replace("LAZY", "SLEEPING");
textElem.value = newText;
}
答案 3 :(得分:0)
以下是替换文字的示例 jsfiddle
正如Ivan和Guffa所说,你需要首先使用textarea值属性
获取textElemvar textElem = document.getElementById("text3").value
正如Amitesh所说,你需要在newText而不是textElem变量上调用replace 方法。
function myFunction() {
var textElem = document.getElementById("text3").value;
var newText = textElem.replace("BROWN", "RED");
newText = newText.replace("FOX", "RABBIT");
newText = newText.replace("JUMPED", "LEAPED");
newText = newText.replace("LAZY", "SLEEPING");
document.getElementById("text3").value = newText;
}