0

クリックした同じテキスト フィールドをクリアする方法についてオンラインで多くの例を見つけましたが、ユーザーにテキスト フィールド 1 をクリックしてテキスト フィールド 2 をクリアしてもらいたいです。

これに何時間も苦労しています。私が抱えている問題は、エラーも出力もなく、機能しないことです。何が問題なのかわかりません。

私のコード:

<jsp:useBean id="speed" class="java.lang.String" scope="request" />
<jsp:useBean id="force" class="java.lang.String" scope="request" />

<script>
    function clearSpeed() {
        var x = document.getElementByID(speed);
        x.value = "";
    }

    function clearForce() {
        var x = document.getElementByID(force);
        x.value = "";
    }
</script>

<input type="text" id="speed" onfocus='clearForce()' value="<%=speed%>">

<input type="text" id="force" onfocus='clearSpeed()' value="<%=force%>">
4

1 に答える 1

2

文字列を引用符で囲む必要があり、JavaScript では大文字と小文字が区別されます。関数はgetElementById()次のとおりです。

function clearSpeed() {
    var x = document.getElementById('speed'); // added quotes around the id
    x.value = "";
}

function clearForce() {
    var x = document.getElementById('force'); // added quotes around the id
    x.value = "";
}

これはより良いでしょう:

<input type="text" id="speed" onfocus="clearValue('force')" value="<%=speed%>">
<input type="text" id="force" onfocus="clearValue('speed')" value="<%=force%>">

単一の関数を呼び出します (一貫性を高めるために引用符の丸めも変更しました)

更新された JavaScript:

function clearValue(id) {
    var x = document.getElementById(id); // no need for quotes and value passed in as variable
    x.value = "";
}

これにより、再利用可能なコードと重複の減少が促進されます

var x = document.getElementById(id);
x.value = "";

になる可能性があります(本当に短くしたい場合!)

document.getElementById(id).value = "";

もちろん、DOM要素で他のことをしたい場合を除いて、変数を使用する必要はありません

于 2012-11-19T11:14:48.810 に答える