他の基準に応じて選択フィールドにオプションを動的に追加するコードがあります。次のようになります。
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フレームワークを使用せずにこれをどのように行うことができますか。私が必要とするのはコードのこの小さな部分なので、フレームワークはこのプロジェクトにとってはやり過ぎです。
乾杯! :-)
あなたは次のようなことができます
var o1 = new Option("key","value");
selbox.options[selbox.options.length] = o1;
o1.setAttribute("key","value");
これは古いことは知っていますが、今日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);
これを1行のコードに組み合わせることができます。
(selbox.options[selbox.options.length] = new Option("key","value")).setAttribute("key","value");
追加する属性が1つしかない場合にのみ機能することに注意してください。そうでない場合は、一時変数が必要になります。