У меня есть следующий html:
<table>
<tr>
<td>
<select id="one">
<option>some option</option>
<option>some option</option>
<option>some date</option>
<option>some option</option>
<option>some date</option>
</select>
</td>
<td>
<select id="two">
<option>some option</option>
<option>some option</option>
<option>some date</option>
<option>some option</option>
<option>some date</option>
</select>
</td>
</tr>
<tr>
<td><input type="text" id="1" /></td>
<td><input type="text" id="2" /></td>
</tr>
</table>
и следующий javascript:
$("select").change(function() {
var element = this;
var value = $('#one').find(":selected").text();
var id = ""
if(value.match(/date/)) {
switch(element.id) {
case "one":
id = "1";
break;
case "two":
id = "2";
break;
}
}
addDatePicker(id);
});
function addDatePicker(id) {
var element = document.getElementById(id);
$(function() {
element.datepicker();
});
}
В chrome я получаю ошибку, которую я поставил как заголовок вопроса. Я предупредил переменную id в функции addDatePicker(), и я получил правильное значение, поэтому я не уверен, почему я получаю эту ошибку.
Для этого вам понадобится объект jQuery.
function addDatePicker(id) {
$('#' + id).datepicker();
}
И поместите обработчик события change
внутри DOM ready, а не DOM, готовый внутри функции addDatePicker
$('#' + id).datepicker();
element
- это элемент DOM, а не объект jQuery. Почему вы используетеdocument.getElementById
? Просто сделайте$('#'+id)
.