onclick函数,如果复选框被选中事件

时间:2015-08-25 18:44:45

标签: javascript

尝试了几件事但没有成功。我在这里错过了什么?我只是想做一个简单的警报或日志,我无法做到。这就是我所拥有的:

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>

3 个答案:

答案 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>

Example

答案 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()" />