0

こんにちは、部分ビュー内の要素をレンダリングするループがあります。要素はlistboxesforであり、レンダリングされるlistboxesの数は、部分ビュー自体ではアクセスできない条件によって異なります。私がやろうとしているのは、javascript関数と、場合によっては最初のリストボックスを使用してレンダリングされたリストボックスの数を見つけることです。そうすれば、それらをループできます。別の方法は、クラス名を割り当ててからカウントすることですが、それはできません。助けてください。

function dosomething() {
            var x = document.getElementsByTagName("listbox");//This line always returns O 
            alert(x.length);
}

 @Html.ListBoxFor(model => model.ServiceTypes, new MultiSelectList(RunLog.Domain.Lists.GlobalList.PartsServiceTypes(), "ID", "Name"), new { style = "width: 200px; height: 80px;", id = "lstbox", name="listbox", onclick = "dosomething()" })
4

1 に答える 1

0

listboxHTMLのようなものはありません。それは単に存在しません。HTML用語(hjavascriptで操作しているもの)では、要素は複数選択を可能selectにするmultiple="multiple"属性で呼び出されます。

それで:

var x = document.getElementsByTagName("select");
// now when looping over this x variable make sure
// you check for the presence of the multiple="multiple"
// attribute which is the only thing which distinguishes
// what you call a ListBox from a DropDown.
for (var i = 0; i < x.length; i++)​ {
    var element = x[i];
    // I am not even sure if this is a good test for the presence
    // of the multiple attribute. Maybe it should work but can't guarantee
    // cross browser correctness
    if (element.multiple) {
        // we've got a list box here
    }
}

そして、jQueryを使用することにした場合:

var listBoxes = $('select[multiple]');
于 2012-07-27T05:13:40.607 に答える