Получить идентификатор элемента через функцию

У меня есть функция, которая вызывается в событии 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);
}