2013-12-18 50 views
3

我工作的一个剧本,我公司认为,当点击复选框:获取ID或那个的onclick复选框的复选框的值在纯JavaScript

  • 火灾作用OptionSelected()
  • 获取在ID复选框
  • 执行基于该ID

或者,优选按位操作:

  • 火灾起作用OptionSelected()
  • 获取分配给该复选框整数(<input="checkbox" value="2",得到2
  • 执行与value按位操作。

为了调试,我让我的代码返回给我一个内部值的警报。我还没有写出按位操作部分。

这里是我的js代码:

function OptionsSelected(e) 
{ 
    alert(e.target.id); 
} 

和示例复选框它引用:

<input type="checkbox" name="checkgrp" onclick="return OptionsSelected(e)" value="2" id="eXAMPLE"><LABEL id="LeXAMPLE"></LABEL> 

当我点击运行框,我得到这个JavaScript错误消息:

enter image description here

有没有人有解决这个问题?我想这很简单,所以除了提供修补程序之外,你会解释一下为什么修复程序有效吗?

如果您的解决方案通过直接拉取位数value代替实际的ID,可节省奖励时间。

注:我不能采用GetElementByID方法,因为我会IDvalue,而不是用它来执行操作。

谢谢大家!

+1

用** this **替换** e **。所以它会是:'onclick =“使用'alert(e.id)'返回OptionsSelected(this)”'和alert(e.target.id)'。这应该工作 – Michel

回答

8

当您使用onclick属性调用脚本时,您正在自己调用该函数。所以在这种情况下,你传递了一个你从未定义过的名为e的变量。

相反,你可以传给你点击复选框的引用:

<input type="checkbox" name="checkgrp" onclick="return OptionsSelected(this)" value="2" id="eXAMPLE"><LABEL id="LeXAMPLE"></LABEL> 

而且在OptionsSelected你可以这样做:

function OptionsSelected(me) 
{ 
    alert(me.id); 
} 
+0

完美!有一个很好的解释。谢谢,这解决了我的问题。另外,通过将'alert(me.id)'改为alert(me.value'),我可以直接传递我需要的按位值。两全其美已经实现! – jwarner112

+0

另外,如果你还没有这样做,你应该为你的标签添加'for'属性,所以它是可点击的(例如'' –

2

可变e当你打电话是没有定义的功能OptionsSelected。 要解决这个问题,您可以使用Tom的解决方案。

看你的连接错误消息,我猜你测试你的IE浏览器的代码。 仅供大家参考,IE不支持'target'属性,它们使用srcElement。 所以你可以做这样的事情:

在HTML中,

<input type="checkbox" name="checkgrp" onclick="return OptionsSelected(window.event)" value="2" id="eXAMPLE"><LABEL id="LeXAMPLE"></LABEL> 

在JavaScript中,

function OptionsSelected(e) 
{ 
    alert((e.target || e.srcElement).value); 
} 

,使其在所有浏览器上运行。