Javascript динамический GetElementByID

Я хотел бы использовать одну и ту же функцию для двух разных элементов, не дублируя свой код и не меняя идентификатор. Я хотел бы передать идентификатор в качестве параметра в свою функцию, но он не работает.

function getSelected(id){
            var selected = new Array();
            **var selObj = document.getElementById(id);** //The problem is here
            var count = 0;
            for (x=0; x<selObj.options.length; x++){
                if (selObj.options[x].selected){
                    selected[count] = selObj.options.value;
                    count++;
                }
            }
            alert(count)
        }

Любые идеи?


person Alexia Hurley    schedule 28.06.2012    source источник
comment
убедитесь, что id является строкой   -  person Someth Victory    schedule 28.06.2012
comment
Какую ошибку вы получаете?   -  person Lusitanian    schedule 28.06.2012
comment
Помимо отображения сообщения об ошибке (если оно есть), пожалуйста, убедитесь, что содержится в файле id. Вы можете использовать console.log, чтобы распечатать его в консоли браузера. Кроме того, как вы вызываете эту функцию? Пожалуйста, отредактируйте свой вопрос и добавьте хотя бы эти детали.   -  person kapa    schedule 28.06.2012


Ответы (1)


Мне кажется, что ошибка где-то в другом месте, а именно в этой строке:

selected[count] = selObj.options.value;

Разве это не должно быть:

selected[count] = selObj.options[x].value;

или (без необходимости дополнительной переменной «count»)

selected.push( selObj.options[x].value );

(Кроме того, вам не хватает var перед x = 0, что делает x глобальной переменной.)

person Niko    schedule 28.06.2012
comment
Спасибо за ваш отзыв. На самом деле я поймал значение selObj.options[x].value через несколько минут после публикации. Также я понятия не имел, что создавал глобальные переменные, когда не использовал var. Я новичок в JS и уверен, что больше не совершу эту ошибку. Я внес эти изменения, но безрезультатно. - person Alexia Hurley; 28.06.2012
comment
Возможно, вы сможете создать минимальный пример через jsfiddle.net? Пока ваш код выглядит нормально. - person Niko; 29.06.2012