在javascript中使用string.replace()来更改textarea的内容

时间:2015-02-04 12:06:46

标签: javascript html string replace

我有一个带有一些文字的文本区域(假设它说“快速布朗的狐狸在懒惰的狗身上跳过”)。当我按下按钮时,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有什么问题吗?

4 个答案:

答案 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值属性

获取textElem
var 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;
}