如果语句与Javascript单选按钮无法正常工作

时间:2014-12-10 01:39:10

标签: javascript radio

我对我使用Javascript编码时出现的问题有疑问。

代码如下:



function PizzaSize(form) {

  if (form.size.value = "medium") {
    alert("A medium size pizza has been selected.")
  }

  if (form.size.value = "large") {
    alert("A large size pizza has been selected.")
  }
}

<form name="pizzaorder">
  <b><u>Size Selection</b>
  </u>
  <br>
  <input type="radio" name="size" value="medium" onclick="PizzaSize(this.form)">Medium
  <br>
  <input type="radio" name="size" value="large" onclick="PizzaSize(this.form)">Large
  <br>
</form>
&#13;
&#13;
&#13;

因此,当单击其中一个单选按钮时,我指示它运行以下功能:

但是,当我在浏览器中测试代码时,它无法正常工作。当我点击&#34; Medium&#34;单选按钮,我收到一条消息说明&#34;已选择中等大小的披萨。&#34;当我在消息上单击“确定”时,单选按钮值会发生变化,因此它会选择一个大尺寸的披萨,然后我会收到一条消息,说“#34;已经选择了一个大尺寸的披萨。”#34;

有谁知道如何解决这个问题?我希望保留这个功能,但希望对其进行修改以使其正常工作,而不是现在的工作方式。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:3)

您正在使用assignment operator =来检查错误的相等性。

使用equality operator ==进行比较,例如

if (form.size.value = "large")
{
alert ("A large size pizza has been selected.")
}

应该是

if (form.size.value == "large")
{
alert ("A large size pizza has been selected.")
}

答案 1 :(得分:1)

有3个运营商:“=”,“==”和“===”。使用==运算符检查事物是否相似。 “=”运算符将右表达式设置为左表达式。

function PizzaSize(form) {

  if (form.size.value == "medium") {
    alert("A medium size pizza has been selected.")
  }

  if (form.size.value == "large") {
    alert("A large size pizza has been selected.")
  }
}
<form name="pizzaorder">
  <b><u>Size Selection</b>
  </u>
  <br>
  <input type="radio" name="size" value="medium" onclick="PizzaSize(this.form)">Medium
  <br>
  <input type="radio" name="size" value="large" onclick="PizzaSize(this.form)">Large
  <br>
</form>

答案 2 :(得分:1)

您没有使用比较运算符(==),因此您的条件返回true。

更好的方法是监听输入的变化,然后运行你的逻辑。

如上所述,您可以在PizzaSize函数中解析 this 而不是 this.form

然后..

function PizzaSize(radioInput) {

   if (radioInput.value=="medium") {
       //do stuff
   }

答案 3 :(得分:0)

要使其与Firefox一起使用,代码需要像这样编写:

if (form.elements.size[0].checked)
{
    alert("A medium size pizza has been selected.")
}

if (form.elements.size[1].checked)
{
    alert("A large size pizza has been selected.")
}

请注意,它使用的是form.elements.size,而不是form.size。这是一个数组,其中每个元素对应一个单选按钮。 checked属性是一个布尔值,用于指示是否检查了该无线电。