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/

他のいくつかのポインタ:

  • 1つで実行できることがわかるように、その操作を実行するために2つの関数は必要ありません。
  • 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 に答える