[英]Basic Javascript HTML form - OnClick not working (I'm sure it's something obvious?)
Here's the JSFiddle link: http://jsfiddle.net/rTJw2/1/ 这是JSFiddle链接: http : //jsfiddle.net/rTJw2/1/
Here's the HTML: 这是HTML:
<label for="gender">Gender: </label>
<input type="radio" name="genderS" id="g1" value="male" checked="checked">Male</input>
<input type="radio" name="genderS" id="g2" value="female" >Female</input>
<br>
<input name="submit" type="submit" value="Select" onclick="scriptResult();"/>
<script type="Javascript">
function scriptResult(){
if (document.getElementById('g1').checked) {
var gender === "male";
} else if (document.getElementById('g2').checked) {
var gender === "female";
};
alert(gender);
};
</script>
I'm sure it's something obvious. 我敢肯定这很明显。 I'm just starting to learn how to implement javascript on pages, and I just want to run the function when the submit button is pressed.
我刚刚开始学习如何在页面上实现javascript,并且只想在按下“提交”按钮时运行该函数。
Any ideas? 有任何想法吗?
Run this with developer tools on in your browser, and you'll see the syntax error on var gender === "male";
在浏览器中使用开发人员工具运行它,您将看到
var gender === "male";
上的语法错误var gender === "male";
and var gender === "female";
和
var gender === "female";
. 。
===
is for comparing equality, not for assigning a value. ===
用于比较相等性,而不是分配值。 A single =
is for assigning a value. 单个
=
用于分配值。
Updated JSFiddle: http://jsfiddle.net/b59vR/ 更新的JSFiddle: http : //jsfiddle.net/b59vR/
Multiple problems: 多个问题:
<script type="Javscript">
should be <script type="text/javascript">
应该为
<script type="text/javascript">
else if (document.getElementById('g2').checked) {
var gender === "female";
}; //There should not be a semicolon here, or at the end of the function
var gender === "male"; //You should not use a triple equals here.
Instead, use =
, it is used for setting variables 而是使用
=
,它用于设置变量
In all, it should be: 总共应该是:
function scriptResult(){
if(document.getElementById("g1").clicked){
var gender="male";
}else{
var gender="female";
}
alert(gender);
}
Okay, first of all. 好的,首先。
This will never work in jsfiddle, because of the scope of the function. 由于函数的范围,这在jsfiddle中永远无法工作。 jsfiddle runs your JS on the onload event, which means that the function
scriptResult()
is enclosed in the onload function and can't be called by the button. jsfiddle在onload事件上运行JS,这意味着函数
scriptResult()
包含在onload函数中,无法通过按钮调用。
Correction, it WILL work if you change the placement of the JS to "head" instead of "onload" 更正,如果将JS的位置更改为“ head”而不是“ onload”,它将可以正常工作
Second, you're declaring your gender variable inside of the if/else statement. 其次,您要在if / else语句中声明性别变量。 Also limiting scope.
也限制范围。 The gender variable needs to be declared outside of the statement.
性别变量需要在声明之外声明。 And only assigned in the statement.
并且仅在声明中分配。
Third, use =
, not ===
. 第三,使用
=
,而不是===
。
function scriptResult() {
var gender;
if (document.getElementById('g1').checked) {
gender = "male";
}
else if (document.getElementById('g2').checked) {
gender = "female";
}
alert(gender);
}
Here is my suggestion 这是我的建议
===
is a comparison operator not assignment operator which is =
===
是比较运算符,而不是赋值运算符,它是=
window.onload=function() {
document.getElementById("form1").onsubmit=function() {
var gender = "unknown";
if (document.getElementById('g1').checked) {
gender = "male";
}
else if (document.getElementById('g2').checked) {
gender = "female";
}
alert(gender);
}
}
using 使用
<form id="form1">
Gender:
<input type="radio" name="genderS" id="g1" value="male" checked="checked" /><label for="g1">Male</label>
<input type="radio" name="genderS" id="g2" value="female"/><label for="g2">Female</label>
<br>
<input type="submit" value="Select"/>
</form>
I think you have some things out of place, I rearranged: 我认为您有些地方不对劲,我重新整理了一下:
<script type="Javascript">
function scriptResult() {
var gender = "";
if (document.getElementById('g1').checked) {
var gender = "male";
}
else if (document.getElementById('g2').checked) {
var gender = "female";
}
alert(gender);
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.