0

我想使用 getElementById 创建具有相同 ID 或名称的数组。

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

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

在此处输入图像描述 我想创建一个这个id的数组,并将它存储到mysql ..

这是我的 JS 代码:

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

  alert(menu_paket_array);  

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

我怎样才能解决这个问题?

谢谢...

4

4 回答 4

2

对多个元素使用相同的 id 是错误的。id是唯一标识某个元素。将其用于更多元素会破坏其目的。如果您需要它用于 ie CSS 样式,那么请改用class它,它专为此类场景而设计。

于 2012-11-26T01:00:46.780 回答
1

ID 在页面上必须是唯一的。您只能在一个元素上使用它。

相反,使用 CSS 类或元素类型进行迭代(这里是演示此代码的小提琴):

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(','));
});
于 2012-11-26T01:11:27.590 回答
0

document.getElementsByClassName(names);

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

于 2012-11-26T01:00:34.410 回答
0

而不是分配每个元素id='menu_paket'出于@WebnetMobile.com 解释的原因)分配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;
}
于 2012-11-26T01:08:11.703 回答