function toggleEmail() {
var isChecked = document.getElementById("subscribe");
if (isChecked.checked) {
console.log('Yep, my function is being called');
}
}
toggleEmail();
<title>JavaScript Challenges</title>
</head>
<body>
<form action="">
<fieldset>
<legend>Email subscriptions</legend>
<p id="subscribe">
<label>
<input type="checkbox" name="subscribe" id="subscribe" onclick="toggleEmail()" />
Yes! I would like to receive all of your free candy!
</label>
</p>
<p id="emailpara">
<label>
答案 0 :(得分:1)
在JSFiddle中,左上角的HTML已经是<body>
部分。你的功能正常。唯一需要改变的是左侧没有换行 - <head>
。这意味着JavaScript正在<head>
。
<head>
<script>JavaScript</script>
</head>
<body>
HTML
</body>
或没有换行 - <body>
也有效。这意味着JavaScript正在<body>
部分的HTML之后运行。
<head>
<head>
<body>
HTML
<script>JavaScript</script>
<body>
答案 1 :(得分:1)
您在评论(http://jsfiddle.net/Lucky500/j0vfzrwy/28/)中提供的小提琴问题是,toggleEmail
函数正在页面的onLoad
事件处理程序中创建,并且是该范围的一部分而不是成为全球范围的一部分。
在HTML标记中使用直接绑定时,如下所示:
<input type="checkbox" name="subscribe" id="subscribe" onclick="toggleEmail()" />
然后你的函数必须在全局范围内。
如果你只是改变你的小提琴使用&#34;没有包装 - <head>
&#34;它起作用,因为该函数是在全局范围内创建的。像这样:http://jsfiddle.net/j0vfzrwy/32/。
答案 2 :(得分:0)
尝试更改此行:
<input type="checkbox" name="subscribe" id="subscribe" onclick="toggleEmail()" />
要
<input type="checkbox" name="subscribe" id="subscribe" onchange="toggleEmail()" />