通过函数获取元素的id

时间:2015-07-02 06:55:00

标签: javascript jquery

我有一个在复选框字段中的onclick事件中调用的函数。

<input type='checkbox' checked='' onclick='return changeEnable();' id='someid'>

和功能

function changeEnable()
{
    var val = $(this).attr('id');
    alert(val);
}

我有,但它返回undefined。我的语法错了还是错过了什么?

这些复选框是动态创建的,具有不同的ID,这就是为什么我想获取某项任务的ID。

4 个答案:

答案 0 :(得分:19)

请注意,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事件,出于辅助功能原因这更好。

答案 1 :(得分:4)

我认为这段代码会对你有所帮助

<input type='checkbox' checked='' onclick='return changeEnable(this);' id='someid'>`
function changeEnable(thisobj)
{
    var val = thisobj.id;
    alert(val);
}

答案 2 :(得分:3)

另外你应该知道.call方法会将输入上下文抛出来运行。

<input type='checkbox' checked='' onclick='changeEnable.call(this);' id='someid'>

function changeEnable()
{
    var val = this.id;
    alert(val);
}

答案 3 :(得分:2)

以这种方式使用:

<input type='checkbox' checked='' onclick='changeEnable(this);' id='someid'>
function changeEnable(el)
{
    var val = el.id;
    alert(val);
}