2013-12-18 79 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); 
} 

,使其在所有瀏覽器上運行。