0

次のコードを使用しました。

<html>
<head>
<script type="text/javascript" language="javascript">
    function doit(page) {
        var entry = page.entry;
        var flag = false;
        document.write(entry.length);
    }
</script>
</head>
<body>
    <span id="error_checkbox" style="color: blue;"> </span>
    <form name="subscribeTablePage">
        <input type="checkbox" id="entry" value="1"/> <label>1</label><br/>
        <input type="button" value="Submit" onclick="doit(document.subscribeTablePage)"/>
    </form>
</body>
</html>

値がentry.length定義されていないのはなぜですか? 複数のチェックボックスで同時に試したところ、 の値はentry.length使用されたチェックボックスの数でした!

ユースケース: データベースから行を取得しようとしています。その場合、削除操作を実行するにはチェックボックスの数をチェックする必要があります!! この問題を解決するために貴重なコメントをお願いします

4

3 に答える 3

0

entry.length の値が定義されていないのはなぜですか?

form.entry要素を参照し、要素に長さプロパティがないためです。あなたがしたい:

entry.value.length;

複数のチェックボックスで同時に試したところ、entry.length の値は使用されたチェックボックスの数でした!

複数のフォーム コントロールに同じ名前が付けられている場合、 は同じ名前form.controlNameのすべてのコントロールのコレクションを参照するためです。HTML コレクションには、コレクション内の要素の数である length プロパティがあります。

また、次の行:

>       document.write(entry.length);

おそらくあなたが望むでしょう:

 alert(entry.value.length);

 // or

 console.log(entry.value.length);

HTML 5 仕様のフォームに関するセクション全体と、 HTML 4.01 標準の関連部分を読むと役立つ場合があります。

于 2012-09-27T06:53:06.913 に答える
0

チェックボックスにアクセスしようとしています#entry。のように属性を追加しますname="entry"

<input type="checkbox" id="entry" name="entry" value="1" />

フォーム オブジェクトは、そのnameプロパティによってアクセスされます。

Javascript に関しては、valueではなくが必要ですlength

document.write(entry.value);

length指定された文字列の長さを文字数で表します。

于 2012-09-27T06:33:39.040 に答える
0

entryidあなたがそのようにそれを参照したい場合は、あなたのinput ものです..name

<input type="checkbox" name="entry" id="entry" value="1"/>

IDでフォーム要素にアクセスするには、使用する必要があります

document.getElementById('idOfElement')

また、長さを使用する目的がわかりません。あなたはそうsizeではありinputませんlength

チェックされているチェックボックスの数を知りたい場合は、おそらくJavaScriptで以下のようにスクリプトを書くことで確認できます

var inputElems = document.getElementsByTagName("input"),
    count = 0;
for (var i=0; i<inputElems.length; i++) {
    if (inputElems[i].type === "checkbox" && inputElems[i].checked === true) {
        count++;
    }
}
于 2012-09-27T06:33:40.753 に答える