JavaScript:在新的Option()之后添加额外的属性

时间:2011-03-31 11:23:17

标签: javascript attributes option

我有一段代码可以根据其他一些标准动态地向选择字段添加选项。看起来有点像这样:

if (chosen == "a_value") {
  selbox.options[selbox.options.length] = new Option('text_1','value_1');
  selbox.options[selbox.options.length] = new Option('text_2','value_2');
  selbox.options[selbox.options.length] = new Option('text_3','value_3');
}

我需要的是为包含特定值的新选项添加​​额外属性。在这种情况下,该属性将被称为“折扣”,该值将是一个整数。稍后我将读取属性值并根据Option字段中的值处理它们。

一旦脚本准备就绪,选项将如下所示;

<option value="value_1" discount="integer">text_1</option>

有道理吗?

现在我怎么能在不使用JS框架的情况下做到这一点。它只是我需要的这一小部分代码,因此框架对于这个项目来说太过分了。

干杯! : - )

3 个答案:

答案 0 :(得分:40)

你可以做点什么


var o1 = new Option("key","value");
selbox.options[selbox.options.length] = o1;
o1.setAttribute("key","value");

答案 1 :(得分:3)

我知道这已经过时了,但是当我今天忘记了add而不是push时,我遇到了这个问题。

正确的方法是使用select.options.add

 var opt = document.createElement('option');
 opt.value = 'hello';
 opt.text = 'world';
 opt.setAttribute('data-discount', 'integer');
 selbox.options.add(opt);

答案 2 :(得分:2)

您可以将其合并为一行代码:

(selbox.options[selbox.options.length] = new Option("key","value")).setAttribute("key","value");

请注意,这仅在您只需添加一个属性时才有效,否则您将需要一个临时变量。