使用getElementById错误的相同id的数组

时间:2012-11-26 00:55:39

标签: php arrays

我想使用getElementById ..

创建具有相同ID或名称的数组

我有一个“添加按钮”,当用户按下此按钮时,它会生成一个下拉列表(动态),该值是从mysql获取的值。

当用户按3次时它看起来像这样..

enter image description here 我想创建一个这个id的数组,并将其存储到mysql ..

这是我的JS代码:

  var menu_paket_array = document.getElementById('menu_paket').value;   

  alert(menu_paket_array);  

问题是,当我尝试创建这个数组(menu_paket_array)时,这个数组中的值只是第一个id(Test 1)..

我该如何解决这个问题?

感谢...

4 个答案:

答案 0 :(得分:2)

对多个元素使用相同的ID是错误的。 ID是唯一标识某个元素。将它用于更多元素会使其失败。如果您需要那样的CSS样式,那么请使用class代替,这是专为此类场景设计的。

答案 1 :(得分:1)

An ID must be unique on a page。你只能在一个元素上使用它。

相反,使用CSS类或元素类型来迭代(here's a fiddle demonstrating this code):

function alertValues() {
    var select, selects = document.getElementsByTagName('select');
    var out = "";
    for (var i = 0; i < selects.length; i++) {
        select = selects[i];
        if (select.className && select.className.match(/CLASSNAME_TO_INCLUDE/)) {
            out += select.options[select.selectedIndex].value;
        }
    }
    alert(out);
}

当然,更好的解决方案是使用像jQuerymootools这样的dom库,您可以使用它来执行以下操作:

jQuery(function($) {
    vals = [];
    $('select.CLASSNAME').each(function() { vals.push($(this).val()); });
    alert(vals.join(','));
});

答案 2 :(得分:0)

document.getElementsByClassName(名称);

其中names是为每个名称生成的类名。

答案 3 :(得分:0)

不是使用id='menu_paket'reasons @WebnetMobile.com explained)分配每个元素,而是指定class='menu_paket'

而不是var menu_paket_array=document.getElementById('menu_paket').value;

var temp_array = document.getElementsByClassName('menu_paket');
var menu_paket_array = [];
for(i in temp_array){
    menu_paket_array[] = temp_array[i].value;
}