У меня есть следующий бит кода. Я пытаюсь динамически добавлять параметры раскрывающегося списка ко второму раскрывающемуся списку на основе выбора в первом раскрывающемся списке. Оба генерируются с помощью Ajax-вызова скрипта, который извлекает данные из базы данных. Вот соответствующий код.
function setSub(doc) {
// Setup some variables
var sNode = document.getElementById('4'); // GRAB THE ELEMENT HERE
var rmiData = doc.getElementById('rmiData').innerHTML;
var aItems = rmiData.split("|");
var aVals;
// Set some background
sNode.style.background = "#fff";
// Loop through adding options to the drop down
for (var x = 0; x < (aItems.length -1); x ++) {
aVals = aItems[x].split("=");
// ADD OPTIONS DYNAMICALLY TO SECOND DROP-DOWN HERE
sNode.options[x+1] = new Option(aVals[1],aVals[0],false,false);
// PROBLEM HERE: ADD ONCLICK TO THE OPTION WE JUST CREATED
sNode.options[x+1].onclick = function() { fixDayList(); };
//sNode.options[x+1].onclick = new Function("fixDayList();");
//sNode.options[x+1].setAttribute("onclick", "fixDayList();");
// END PROBLEM LINES
}
// Set the length
sNode.length = x+1;
// Select the first item in the list
sNode[0].selected = true;
}
Если вы заметили раздел после строки «// ПРОБЛЕМА ЗДЕСЬ», я попытался добавить событие onclick тремя различными способами. Все 3 работают правильно в Firefox. Ни одна из трех не работает в IE6 или Safari (не уверен в IE8). Есть предложения по этому поводу? Остальная часть кода использует какой-то старый школьный JavaScript, который я скопировал из существующего фрагмента старого кода, который работает, и я просто пытаюсь добавить onclick к своей версии (желательно без переписывания большого количества кода).
Есть мысли о том, почему события onclick не запускаются из Safari и IE?
У меня есть доступ к jQuery в моем коде. Так что, если jQuery исправит это внутренне, и я смогу выбрать подходящий селектор, это сработает. Но я не уверен, как именно это выбрать. Я попробовал:
$ ('# 4'). Options [x + 1] .click (function () {fixDayList ();});
Но этот селектор плох, и я не уверен, как именно выбрать правильный (я зеленый в способах jQuery).