3

私はあらゆる言語でのコーディングが初めてで、現在は HTML、PHP、および JavaScript で作業しています (しようとしています)。HTML ファイルのテキストエリアにある情報を JavaScript ファイルのアラートで表示するのが難しいのです。HTML コードは次のとおりです。

    <head>
        <title> My Form</title>
        <script type= "text/javascript" src ="./JavaScript/validaLinha.js"></script>
    </head>
    <body>
        <form name="Linhas" method="POST" action="Linhas-p.php">
             <textarea name="descricaoLinha" onFocus="resetField('descricaoLinha')"> TEXT-TEXT-TEXT</textarea>
        </form>
    </body>

HTML コードでわかるように、テキストエリアの名前を「resetField」という JavaScript 関数に送信しようとしています。「resetField」が何をするか見てみましょう。

function resetField(field){
    d = document.Linhas;

    alert("It's entering the function."); //ANSWER = It's entering the function.
    alert(field);                         //ANSWER = descricaoLinha
    alert(d.field.value);                 //ANSWER = Nothing.
    alert(d.getElementById(field).value); //ANSWER = Nothing.
}

テキストエリアの値に設定された情報を取得できません! イベントは関数を呼び出しています (最初のアラートが表示されます)、文字列は関数によって受信されています (2 番目のアラートはテキスト領域の名前を示しています) が、必要なものである他の 2 つが表示されません。エラーが表示された場合にコードを読み続けないJavaScriptのものがあるため、アラートの順序を変更しようとしました。

強調するために、テキストエリアにコンテンツが必要です。(名前はちゃんと受け取れています)

読んでくれてありがとう!私の英語でごめんなさい。^^

4

3 に答える 3

5

テキストエリアに を追加IDします

<textarea id="descricaoLinha" name="descricaoLinha" onFocus="resetField('descricaoLinha')"> TEXT-TEXT-TEXT</textarea>

そして、ID 代わりname

alert(d.getElementById(field).value);

ID = " descricaoLinha "を持つ要素を検索しているため、このコードは要素descricaoLinhaを見つけることができません。

于 2013-06-07T01:57:37.443 に答える
2

あなたの「フィールド」は単なる文字列であり、javascript オブジェクトではありません。もちろん、name属性はありません。

そして、それはに似ていますd = document.linha;

DOM 要素をそのid属性で取得する必要があります。

d = document.getElementById("Linha");


編集:フィールドに id 属性を追加する必要もあります

<textarea id="descricaoLinha" name="descricaoLinha" onFocus="resetField('descricaoLinha')"> ...

1 つの解決策は、JavaScript 関数を次のように変更することです。

function resetField(fieldId) {
    var field = document.getElementById(fieldId);
    alert(field);           // object
    alert(field.value);     // text field value    
    // Do whatever you want with the field object here 
}

コンソールをオンにして、デバッグに使用するconsole.log('output')代わりに使用する必要があります。alert()次の方法で Firefox コンソールを有効にすることができます。Ctrl + Shift + K

于 2013-06-07T02:21:28.790 に答える
0

ハンドラーに渡す必要がthisあります。onfocus

onFocus="resetField(this);"

次のようにアクセスします。

alert("It's entering the function."); 
alert(field.name);                       
alert(field.value);

ここにデモがあります:http://jsfiddle.net/RbUZr/

于 2013-06-07T01:57:20.977 に答える