2014-09-18 73 views
-1

早上好,Javascript方法不工作 - 複選框

我有困難,爲什麼這個下面的Javascript方法不工作。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd"> 

<!--Author: Alejandro Deguzman Jr--> 

<html> 
<head> 

<title>Realtor Inquiry</title> 

<script type="text/javascript"> 

/* <![CDATA[ */ 
function termAgreed() { 
    if (document.getElementByID.checked == true) { 
     window.alert("Works!"); 
     } 
} 
/* ]]> */ 

</script> 

</head> 

<body> 
<form> 
<input type="checkbox" id="agree" value="Terms" type="checked" checked="unchecked">Agree with the Terms & Conditions<br> 
</form> 
</body> 
</html> 

我試圖用上面的代碼來完成的是,當複選框被選中時,會出現提示。我沒有完全知道如何尋找這個我正在尋找的具體答案。

+4

在此代碼你在哪裏調用方法termAgreed()? – 2014-09-18 18:46:34

+0

我認爲,我在身體中稱這種方法。至少它是我想要的方法激活的地方。當複選框被選中時,會出現提示。 – 2014-09-18 18:57:38

+1

我在這裏沒有看到任何關聯複選框和該功能。我建議你閱讀'onclick'事件。 – JLRishe 2014-09-18 19:33:28

回答

0

1)如上所述,您需要在您的HTML中調用您的函數。使用onchange()並調用複選框更改的功能。

2)您需要更正選擇元素的語法。其Id而不是ID,並通過您想要選擇的element的Id。

function termAgreed() { 
 
if (document.getElementById("agree").checked == true) { 
 
window.alert("Works!"); 
 
} 
 
}
<input type="checkbox" id="agree" onchange="termAgreed()" value="Terms" checked="unchecked">Agree with the Terms & Conditions

+0

真棒,做了我正在努力完成的事情。 – 2014-09-18 19:07:55

+0

請標記答案。 – 2014-09-18 19:09:01

0

首先,您沒有正確使用getElementById。你需要傳入你正在尋找的元素。像這樣,getElementById(「同意」)。正如其他人已經在評論中發佈的那樣,你不會在代碼中調用'termAgreed'。

+0

我剛剛意識到這一點。我忘了把複選框ID。我將如何去調用我的表單中的方法?我應該使用onClick嗎?我只想在檢查複選框後激活該方法。 – 2014-09-18 18:58:22

+0

考慮爲此使用jQuery。創建複選框的點擊事件,看看它是否被選中,然後根據該檢查來執行警報。這裏是小提琴 - > http://jsfiddle.net/5o6h4g8o/ – killQuotes 2014-09-18 19:03:01

+0

對不起,但我還不熟悉JQuery。我仍然試圖圍繞Javascript包裹我的頭。 – 2014-09-18 19:05:47

0

我修改你的termAgreed咯。請注意,querySelector不適用於older browsers。我在結尾加上部分加入change事件添加到複選框:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd"> 

<!--Author: Alejandro Deguzman Jr--> 

<html> 
<head> 

<title>Realtor Inquiry</title> 

<script type="text/javascript"> 

/* <![CDATA[ */ 
function termAgreed() { 
    if (document.querySelector('#agree').checked) { 
     window.alert("Works!"); 
     } 
} 
/* ]]> */ 

</script> 

</head> 

<body> 
<form> 
<input type="checkbox" id="agree" value="Terms" type="checked" checked="unchecked">Agree with the Terms & Conditions<br> 
</form> 
<script type="text/javascript"> 
document.querySelector('#agree').addEventListener('change', termAgreed); 
</script> 
</body> 
</html> 
+0

我明白了,這似乎是使用事件處理程序的更高級的方法?至今我還不熟悉JQuery。 – 2014-09-18 19:07:23

+0

這裏沒有jQuery。雖然我建議您查看它,如果你開始使用更多的JavaScript。雖然可能不適合您的使用,但通過JavaScript添加事件處理程序(我所做的)在您向頁面添加更多JavaScript時更易於維護。它也被普遍接受爲[最佳實踐](http://stackoverflow.com/questions/15792498/is-it-bad-practice-to-use-inline-event-handlers-in-html)(和[這裏](http://www.sitepoint.com/web-foundations/onclick-html-attribute/),例如,請參閱底部兼容性後的註釋)。 – user4040648 2014-09-18 19:28:13