简体   繁体   English

基本的Javascript HTML表单-OnClick无法正常工作(我确定这很明显吗?)

[英]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 这是我的建议

  1. do not name anything "submit" 不要命名为“提交”
  2. === is a comparison operator not assignment operator which is = ===是比较运算符,而不是赋值运算符,它是=
  3. spell JavaScript correctly or nothing will happen 正确拼写JavaScript否则将不会发生任何事情
  4. wrap in a form and use onsubmit if inline, but better add the event handler in the head onload 包装成表格并在内联时使用onsubmit,但最好在onload头中添加事件处理程序
  5. use label correctly 正确使用标签
  6. use head instead of on load in JSFiddle 在JSFiddle中使用head而不是负载

Like this Live Demo 像这个现场演示

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.

相关问题 javascript排序算法不起作用-有什么明显的我做错了吗? - javascript sorting algorithm not working - anything obvious i'm doing wrong? Windows脚本宿主和JavaScript; 我想我错过了一些明显的东西 - Windows Script Host and JavaScript; I think I'm missing something blatantly obvious 有些东西在我的 html 中添加了一个跨度,我不确定是什么 - something is adding a span to my html and I'm not sure what JavaScript 函数不起作用,但我确信一切都很好 - JavaScript funcion isn't working, but I'm sure everything's fine AngularJS表单在不应该提交时提交,我不确定为什么 - AngularJS form submitting when it's not supposed to and I'm not sure why 基本的Javascript:onclick事件不起作用 - Basic Javascript: onclick event not working 从事一项任务,我只是不理解某些东西,但不确定我错过了什么(可能很多) - working on an assignment and I am just not understanding something but not sure what I'm missing (probably alot) javascript onclick无法在表单中工作 - javascript onclick not working in a form 制作BASIC angularjs应用对我不起作用,我不确定为什么 - Making a BASIC angularjs app isn't working for me and I'm not sure why 我对此代码感到奇怪。 HTML JAVASCRIPT - I'm curious about this code something strange. HTML JAVASCRIPT
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM