将对象附加到所有选择类javascript

将对象附加到所有选择类javascript,javascript,Javascript,我有4个类为GMetrics的HTML元素,如果我按ID调用元素,我可以设置值,但我认为如果有一个函数来处理填充所有select字段,而不是每个ID有4个单独的函数,这会更干净 我有一个2D数组,其中存储了我的值,我之前使用document.getelementbyid测试了这个数组,它工作得很好。现在我遇到了一个问题,它在内部while循环上循环了4次(这是我在HTML上拥有的GMetrics类的数量),但它只是将它附加到最后一个类,而不是前3个 window.onload = functio

我有4个类为GMetrics的HTML元素,如果我按ID调用元素,我可以设置值,但我认为如果有一个函数来处理填充所有select字段,而不是每个ID有4个单独的函数,这会更干净

我有一个2D数组,其中存储了我的值,我之前使用
document.getelementbyid
测试了这个数组,它工作得很好。现在我遇到了一个问题,它在内部while循环上循环了4次(这是我在HTML上拥有的GMetrics类的数量),但它只是将它附加到最后一个类,而不是前3个

window.onload = function popGMetrics()  {

    var index = 0;

   while (index < metrics.length) {
        var self = document.getElementsByClassName('GMetrics');
        var opt = document.createElement('option');
        var classCount = self.length;
        var i = 0;

        opt.innerHTML = metrics[index][0];
        opt.value = metrics[index][1];

        while (i < classCount) {
            self[i].appendChild(opt);
            i++;
        }

        index++;
     }

}
window.onload=函数popGMetrics(){
var指数=0;
while(索引
document.getElementsByTagName('select')可能会帮助您获取要查找的get元素

还要注意,您正在重新填充while的每个迭代
classCount
。移动:

var classCount=document.getElementsByClassName('GMetrics')。长度


在循环之前添加到将有助于保持其恒定值。

问题在于您在外部循环中创建了一个
选项。因此,您可以将单个元素附加到每个选择项,这样可以在元素之间移动该元素。因此,它只出现在最后一个
select
中,因为这是循环最后附加的位置

要解决这个问题,您需要在内部循环中创建一个新的
选项
实例,以便为每个
选择
创建一个新元素。试试这个:

let度量=[
['foo','bar'],
[‘嘶嘶声’、‘嗡嗡声’]
]
window.onload=函数popGMetrics(){
var指数=0;
while(索引

将有多个不同类别的下拉列表,它们将有单独的项目,因此我不能使用select标记@Anselm