web-dev-qa-db-ja.com

Javascript document.getElementById( "id")。value要素が空のテキストボックスの場合、空の文字列ではなくnullを返します

document.getElementById("id-name").valueを使用してアクセスしようとしている値を持つテキストボックス要素があります。呼び出しが空の文字列ではなくnullを返していることがわかりました。返される値のデータ型はまだ文字列です。 nullは文字列値ですか?

_<input type="text" value="" id="mytext">_は、var mytextvalue = document.getElementById("mytext").value;を使用して値を取得しようとしているテキストボックスです

8
Guruprasad

HTMLを投稿すると少し役立つかもしれません。代わりに、要素を最初に取得してから、それがnullかどうかを確認してから、その要素がHTMLで表示されるかどうかを知らずに直接値を要求するのではなく、値を要求できます。

element1 = document.getElementById(id);

if(element1 != null)
{
    //code to set the value variable.
}
7
ilight

fyi、これは、入力タグでhtml type = "number"属性を使用している場合に発生する可能性があります。数字以外を入力すると、スクリプトが何が起こっているかを知る前に数字をクリアします。

4
Ivan Town

あなたのコードのために

_var mytextvalue = document.getElementById("mytext");
_

このコードの前にdocument.write()ステートメントがある場合、mytextvalueにはnullが含まれます。したがって、_document.write_ステートメントを削除すると、変数mytextvalueに適切なテキストオブジェクトが取得されます。

これは、ドキュメントを変更する_document.write_が原因です。

2
user4989959

このdemo は、Chrome 14、FF3およびFF5(with Firebug):

var mytextvalue = document.getElementById("mytext").value;
console.log(mytextvalue == ''); // true
console.log(mytextvalue == null); // false

console.logからalertまで、IE6で目的の出力が得られます。

1
andyb
try this...    
<script type="text/javascript">
    function test(){
    var av=document.getElementById("mytext").value;
    alert(av);
    }
    </script>

    <input type="text" value="" id="mytext">
    <input type="button" onclick="test()" value="go" />
1
Rahul

これを確認してください fiddle そして、null値のアラートを受け取るかどうかを教えてください。コードをそこにコピーし、いくつかのアラートを追加しました。他の人と同じように、nullが返されることもありません。空の文字列が返されます。どのブラウザを使用していますか?

1
Aziz Shaikh

アクセスしようとしているテキストボックスは、javascriptが実行されている時点ではまだページにロードされていないと思います。

つまり、JavascriptがページのDOMからテキストボックスを読み取れるようにするには、テキストボックスが要素として利用可能である必要があります。テキストボックスがページに書き込まれる前にjavascriptが呼び出されると、テキストボックスは表示されないため、NULLが返されます。

1
ilight

HTMLマークアップでvalue属性を省略しているようです。

<input value="" ... >としてそこに追加します。

0
Pavel Koryagin