0

Firefox でのみ、このエラーが発生します。

グローバル スコープで ID/NAME によって参照される要素。代わりに W3C 標準の document.getElementById() を使用してください。

if (c.checked == 1)

GFPart...vitate= (line 17)

TypeError: c is null

if (c.checked == 1)

私のJavascriptは次のようになります:

<script type="text/javascript">
    function SavePartners() {
        var poz = '@ViewBag.Activity';
        var rowCount = dataTable.rows.length;
        var ala0 = "";
        for (var i = 1; i < rowCount; i++) {
            var c = document.getElementById("chkpart" + i);
            if (c.checked == 1)
                ala0 += dataTable.rows[i].cells[1].innerText + "^";
            var ala = ala0.substring(0, ala0.length - 1);
        }
    $.ajax({
        url: '@Url.Action("TPartners")',
        data: { pozActivitate: poz, listapart: ala },
        dataType: "Json",
        type: "POST",
        error: function () {
            alert("Error");
        },
        success: function (data) {
            window.close();
        }
    });
}

私のHTMLは次のようになります(2列のテーブル、1列にはチェックボックス、2列にはパートナーの名前があります)

        <tr>
            <td style="border-left: none;">
                @if (listaDeTest.Activity!= 0)
                {
                    string x = (from a in listaDeTest.PartenerName
                                where a == s
                                select a).FirstOrDefault();
                    if (x == null)
                    {
                    <input type="checkbox" name="chkpart @i" />
                    }
                    else
                    {
                    <input type="checkbox" name="chkpart @i"  checked="checked"/>                         
                    }
                }
                else
                {
                    <input type="checkbox" name="chkpart @i" />
                }
            </td>
            <td>
                <p style="margin-left: 5px;">@s</p>
            </td>
        </tr> 

....最後に、onclick機能を持つボタンがあります。何が考えられるでしょうか?IEでは完全に機能するためです。前もって感謝します

4

2 に答える 2

2

では、このコードは何をするのでしょうか?

var c = document.getElementById("chkpart" + i);

ID募集中です!今あなたのコードを見てください、あなたは何が欠けていますか?

<input type="checkbox" name="chkpart @i" />

IDなし!name 属性は id 属性ではありません。

于 2012-09-05T13:44:06.933 に答える
2

Internet Explorer と Chrome は、「id」値を持つ DOM 要素のグローバル変数を自動的に作成します。Firefox はそうすべきだと言っている標準がないため、そうではありません (とにかく間抜けな考えです)。

したがって、Internet Explorer では、次のようにページに HTML タグを配置します。

<div id='container'>
   ...
</div>

windowは、 「コンテナ」と呼ばれるグローバル変数 (プロパティ) も持っていることを意味し、その値はその DOM 要素への参照です<div>。Firefox では、そうではありません。電話する必要があります

var container = document.getElementById('container');

DOM 要素への参照を取得します。

あなたのコードでは、Firefox が不平を言っている参照が明確ではありません。「dataTable」だと思いますが、これはのIDであると推測してい<table>ます。しかし、あなたはそれを投稿していないので、わかりません。

編集— ああ、もう 1 つ: Internet Explorer は、理由は不明ですが、要素.getElementById()に基づいて呼び出しから要素を返します。その誤った動作は、Firefox や他のブラウザーではコピーされません。入力要素には「name」属性がありますが、「id」はありません。

于 2012-09-05T13:29:06.627 に答える