我有一个在复选框字段中的onclick事件中调用的函数。
<input type='checkbox' checked='' onclick='return changeEnable();' id='someid'>
和功能
function changeEnable()
{
var val = $(this).attr('id');
alert(val);
}
我有,但它返回undefined
。我的语法错了还是错过了什么?
这些复选框是动态创建的,具有不同的ID,这就是为什么我想获取某项任务的ID。
答案 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);
}