0

以下は、Chrome または Firefox で確認できる変更をレンダリングしません。

var field = document.getElementById( 'input-id' ), nodeName;

if ( field !== null ) {
    nodeName = field.nodeName.toLowerCase();

    if( nodeName === 'input' || nodeName === 'textarea' ) {
        field.value = 'hello';
        console.log( field.value );
    }
}

ターゲットは次のとおりです。

<input id="input-id" name="input-name" type="text" required="required" placeholder="example">

ただし、コンソールは両方で正しい値を報告します。なんで?検証済みの HTML5 を使用しています。スクリプトは終了bodyタグの前にあります。

4

6 に答える 6

1

すでに次のように述べているため、おそらくスクリプトの読み込みの問題ではありません。

スクリプトは body タグの前にあります。

ページ上に同じ要素を複数持つ必要がありidます。ソースを表示し ( Firefox ではCtrl+U )、 input-idを検索します。ページ上の 1 つの要素だけがその ID を持っていることを確認してください。

console.log次の行を他の呼び出しに追加することで、どの要素が変更されているかをログに記録することもできます。

console.log( field );

これにより、要素全体がコンソールに記録され、さらにデバッグするのに役立ちます。

于 2013-01-02T06:34:44.133 に答える
1

,コードを編集する代わりに使用してい.ます、仲間:

var field = document.getElementById( 'input-id' ).nodeName;
于 2013-01-02T06:04:54.083 に答える
0

OPのコードで設定した直後に、スクリプトの他の場所で誤って入力値を空の文字列に上書きしていたことがわかりました。私のconsole.logは、その場所にあり、上書きされる前に値を取得しました。そのため、ブラウザーで異なる結果が得られたにもかかわらず、正しい値が報告されました。スクリプト全体を投稿しなかったことをお詫びしますが、縮小した例を提供しようとしていました。

于 2013-01-03T03:33:15.513 に答える
0

スクリプトは、入力要素の前にロードされている可能性があります。

スニペットをページの下部に配置してみてください。

于 2013-01-02T06:14:03.247 に答える
0

これを試して

 $(function() {
        var field = document.getElementById( 'input-id' ), nodeName;
        if ( field !== null ) {
            nodeName = field.nodeName.toLowerCase();

            if( nodeName === 'input' || nodeName === 'textarea' ) {
                field.value = 'hello';
                console.log( field.value );
            }
        }
     });

または、ページの最後にスクリプトを配置します。

入力タグrender.soの前にスクリプトが実行されているため、機能しない理由は、それを最後またはボディロードイベントに配置するか、ドキュメント準備機能に配置するよりもjqueryを使用している場合です

于 2013-01-02T06:12:03.210 に答える
0

を追加していないと思いますonload function<body>好きに追加できます

<body onload="sumfunction();">

またはJavaScriptで

<script>
    window.onload = sumfunction; 
</script>

例を次に示します: http://jsbin.com/ezovun/1/edit

于 2013-01-02T06:24:51.327 に答える