私は、各select要素内に複数のselect要素をプログラムで作成しています。私はselect要素のそれぞれのidを私に警告する独自のonchange関数を各select要素にプログラム的に割り当てる必要があります。 複数のselect要素の最後に追加されたonchange関数のみが呼び出されます
$(document).ready(function() {
// Headers indicate how many select elements I need.
// In this example, they are only used to initialize a unique select.id
for (var ndx = 0; ndx < headers.length; ndx++) {
var header = headers[ndx];
const rowName = header.innerHTML;
var select = document.createElement("select");
var options = ["Contains", "Equals", "Starts with", "More than", "Less than", "Between", "Empty",
"Doesn't contain", "Doesn't equal", "Doesn't start with", "Is not more than", "Is not between", "Is not empty"];
select.id = rowName + "-select";
options.forEach(function(option) {
var element = document.createElement("option");
element.value = option;
element.innerHTML = option;
select.appendChild(element);
});
select.onchange = function() {
alert("select.id: " + select.id);
}
}
}
はしかし、選択要素のいずれかのオプションを変更すると、非常に最後のselect要素の
唯一のIDは、アラートに示されています。これは私が慣れていない問題を参照するjavascriptかもしれませんか?助けてくれてありがとう。
'select'ではなく' this'を使用できませんでしたか? –
これは、各繰り返しをselect.idで変更するためです。 'select.id = rowName +" -select ";'、最後のものを出力するだけです。 JSクロージャは範囲外の変数への参照を格納しますが、現在のように古い値を格納しません。 –
@AP。うわー、あなたは正しい!それは最後の要素のidだけが示されている理由についても意味をなさないでしょう。ありがとうございました! –