Получить идентификатор элемента через функцию
У меня есть функция, которая вызывается в событии onclick в поле флажка.
<input type='checkbox' checked='' onclick='return changeEnable();' id='someid'>
и функция
function changeEnable()
{
var val = $(this).attr('id');
alert(val);
}
У меня есть это, но он возвращает undefined
. Является ли мой синтаксис неправильным или мне что-то не хватает?
Эти флажки динамически создаются и имеют разные идентификаторы, поэтому я хочу получить идентификатор для некоторой задачи.
Ответы
Ответ 1
Обратите внимание, что this
в вашей функции changeEnable
будет window
. Вам необходимо передать ссылку на элемент в качестве параметра функции:
<input type='checkbox' checked='' onclick='return changeEnable(this);' id='someid'>
function changeEnable(el) {
var val = el.id
alert(val);
}
Или, как улучшение, используйте Javascript, чтобы прикрепить свои события для лучшего разделения проблем:
<input type="checkbox" id="someid">
$(function() {
$('#someid').change(function() {
var val = this.id
alert(val);
}
});
Обратите внимание, что в приведенном выше примере используется флажок change
, что лучше для удобства доступности.
Ответ 2
Я думаю, что этот код поможет вам многое
<input type='checkbox' checked='' onclick='return changeEnable(this);' id='someid'>`
function changeEnable(thisobj)
{
var val = thisobj.id;
alert(val);
}
Ответ 3
Также вы должны знать метод .call, который вызывает входной контекст для функции.
<input type='checkbox' checked='' onclick='changeEnable.call(this);' id='someid'>
function changeEnable()
{
var val = this.id;
alert(val);
}
Ответ 4
используйте следующим образом:
<input type='checkbox' checked='' onclick='changeEnable(this);' id='someid'>
function changeEnable(el)
{
var val = el.id;
alert(val);
}