2012-06-28 3 views
0

Я хотел бы использовать ту же функцию на двух разных элементах, не дублируя свой код и не изменяя идентификатор. Я хотел бы передать ID в качестве параметра в свою функцию, но он не работает.Javascript Dynamic 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) 
     } 

Любые идеи?

+0

убедитесь, что 'id' является строкой –

+3

Какая ошибка вы получаете? – Lusitanian

+0

Помимо отображения нам сообщения об ошибке (если есть), пожалуйста, убедитесь, что содержится в 'id'. Вы можете использовать 'console.log' для печати на консоли браузера. Кроме того, как вы называете эту функцию? Измените свой вопрос и добавьте хотя бы эти данные. – kapa

ответ

1

кажется мне, как если бы ошибка где-то еще, specificially в этой строке:

selected[count] = selObj.options.value; 

Это не должно быть:

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

или (без необходимости дополнительного «подсчета "переменная)

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

(Кроме того, вы пропускаете var перед x = 0, тем самым делая x глобальной переменной.)

+0

Спасибо за ваши отзывы. Я действительно поймал «selObj.options [x] .value» через несколько минут после публикации. Также я понятия не имел, что я создавал глобальные переменные, когда я не использовал «var». Я новичок в JS, и я не буду повторять эту ошибку. Я сделал эти изменения, но безрезультатно. –

+0

Возможно, вы можете создать минимальный пример через http://jsfiddle.net? Пока что ваш код выглядит нормально. – Niko