Во-первых, я воссоздал ваш элемент select
как ul
:
<ul id="barney">
<li>Mess 1</li>
<li>Mess 2</li>
<li>Mess 3</li>
<li>Mess 4</li>
</ul>
Тогда вам нужно будет использовать прослушиватели событий вместо встроенных обработчиков. Другими словами, вам понадобится эквивалент onclick
, но вы хотите поместить его в свой JS, а не в HTML. Для этого есть много причин, но в данном случае мы хотим использовать объект MouseEvent, переданный в прослушиватель событий. Поэтому нам понадобится кросс-браузерный прослушиватель событий для обработки наших событий, поскольку они ведут себя по-разному в разных браузерах:
function listen(evnt, elem, func) {
if (elem.addEventListener) // W3C DOM
elem.addEventListener(evnt,func,false);
else if (elem.attachEvent) { // IE DOM
var r = elem.attachEvent("on"+evnt, func);
return r;
}
}
Тогда мы будем listen
для события click
на этом элементе ul
. Мы будем перебирать дочерние элементы ul
до тех пор, пока цель события (ev.target
), то есть li
, по которой был выполнен щелчок, не сопоставит этот дочерний узел и не передаст информацию в измененную форму вашей функции CngMess
:
listen('click', ul, function(ev){
for (var i = 0, il = this.children.length; i < il; i++) {
if (ev.target == this.children[i]) {
CngMess(this, 'fred', i);
}
}
});
function CngMess(obj, id, messI) {
document.getElementById(id).innerHTML = MessAry[messI];
}