我对我使用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;
因此,当单击其中一个单选按钮时,我指示它运行以下功能:
但是,当我在浏览器中测试代码时,它无法正常工作。当我点击&#34; Medium&#34;单选按钮,我收到一条消息说明&#34;已选择中等大小的披萨。&#34;当我在消息上单击“确定”时,单选按钮值会发生变化,因此它会选择一个大尺寸的披萨,然后我会收到一条消息,说“#34;已经选择了一个大尺寸的披萨。”#34;
有谁知道如何解决这个问题?我希望保留这个功能,但希望对其进行修改以使其正常工作,而不是现在的工作方式。任何帮助将不胜感激。
答案 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属性是一个布尔值,用于指示是否检查了该无线电。