4

到目前为止,我有这个 jsfiddle

<p>Click the button to remove http:// and www. from input box belove below:</p>

<textarea id="demo" name="comments" cols="25" rows="5">
    http://www.google.com
</textarea><br>
<input type="submit" value="Submit" button onclick="myFunction(),myFunction2()" />
</form>

<script>
function myFunction()
{
    var str=document.getElementById("demo").innerHTML; 
    var n=str.replace("http://","");
    document.getElementById("demo").innerHTML=n;
}

function myFunction2()
{
    var str=document.getElementById("demo").innerHTML; 
    var m=str.replace("www.","");
    document.getElementById("demo").innerHTML=m;
}
</script>​

它适用于文本pre输入,但不会更改提交的文本。我敢肯定有一个简单的答案,我只是新手,无法解决或找到答案。

4

1 回答 1

5

您需要使用.value,而textarea不是.innerHTML

.innerHTML仅查看元素中生成的 HTML。如果用户输入新内容,源不会改变。

但是,该值确实:

document.getElementById("demo").value = ...

在你的小提琴中修复:

http://jsfiddle.net/AbSh2/12/

其他几个指针:

  • 您不需要两个函数来执行该操作,因为您可以看到它可以在一个中完成。
  • 您可以使用type='button'而不是提交,因为 Javascript 不关心表单提交(这只在服务器上很重要,它接收 POST 和 GET 数据。Javascript 不能)

您可以进一步简化您的功能,而无需到处保存字符串:

function myFunction() {
    var str=document.getElementById("demo").value;
    var n=str.replace("http://","");
    var m=n.replace("www.","");
    document.getElementById("demo").value=m;
}

工作正常。你甚至可以做

function myFunction() {
    document.getElementById("demo").value = 
        document.getElementById("demo").value.replace("http://","").replace("www.","");
}

但这有点混乱IMO,所以应该仅用于学习目的:)

于 2012-11-23T01:02:28.030 回答