【问题标题】:Javascript and CheckboxesJavascript 和复选框
【发布时间】:2012-08-12 03:24:10
【问题描述】:

我正在尝试创建一个复选框,该复选框将在单击时更改表单操作。我首先将其设置为根据是否检查消息来提醒消息,但没有发生任何事情。请帮帮我!

JavaScript:

function toggleAction(){
var check = document.getElementById('checkb').checked;
   if (checked == "1"){
    alert("is checked");
   }else{
    alert("is not checked"); }
}

HTML:

<INPUT TYPE="checkbox" id="checkb" onclick="toggleAction()">Add Another<br>

【问题讨论】:

  • 您的变量名称是 check,但您正在检查 if 语句中名为 checked 的变量的值,该变量在您的代码中不存在。

标签: javascript checkbox onclick conditional toggle


【解决方案1】:

您的主要问题是您将变量命名为check,但随后在if 语句中查找checked。其次,请注意.checked 是一个布尔值(truefalse),但您将它与字符串“1”进行比较。这恰好可行,但不推荐。

试试:

if (check) alert("is checked");
else       alert("is not checked");

比在处理程序中显式使用getElementById 更好的是,使用对处理事件的复选框的引用:

document.getElementById('checkb').onclick = toggleAction;
function toggleAction(){
  if (this.checked) alert('yes');
  else              alert('no');
}

请注意,在上面我还如何使用 JavaScript 以编程方式分配事件处理程序,而不是使用 onclick="..." HTML 属性。这被认为是“最佳实践”;您不应该直接在 HTML 中编写 JavaScript。

【讨论】:

  • +1 - if(x == 1) 和 if(x == "1") 是两个完全不同的条件。 1 为真,而 "1" 为字符串。
  • @DavidHoude 但请注意,在松散类型的 JavaScript 中,1=="1"true;如果您不想执行类型强制,则需要使用1==="1"。 (事实上​​,true==1true=="1" 也是如此。)
  • 我最初没有引号,但这不起作用。我只是最近才添加它们,看看它是否会改变任何东西
  • 感谢您的澄清!
【解决方案2】:

if(checked == "1") 应该是if(check)

【讨论】:

    猜你喜欢
    • 2021-07-04
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2013-09-06
    • 2010-10-05
    相关资源
    最近更新 更多