0

我对 JavaScript/jQuery 有疑问。我试图在显示对话框后更改变量的值,并且如果检查了复选框,但是当我检查它的值时这不起作用。我能做些什么或者这个代码是错误的?

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>JS/jQuery</title>
  <link rel="stylesheet" type="text/css" href="style.css">
  <script type="text/javascript" src="jquery-1.8.2.min.js"></script>
  <script type="text/javascript" src="myjs.js"></script>
</head>
<body>
  <div class="back"></div>
  <div class="start">   
    <label for="chex">Is this checkbox checked?</label>
    <input type="checkbox" id="checkexist" name="chex" />
    <button id="run">Run form</button>
  </div>
  <div class="window"></div>
</body>
</html>

JavaScript:

$(document).ready(function() {

  var start = false;
  var check = false;

  if (start == false) {
    $("#checkexist").click(function(){
        if (this.checked) {
            check = true;
        }
    });
    $("#run").click(function(){
        start = true;
        $(".start").fadeOut('slow', function(){
            $(".start").css("display", "none");
        });
        $(".back").fadeOut('slow', function(){
            $(".back").css({'display' : 'none', 'opacity' : '0', 'filter' : 'alpha(opacity=0)'});
        });
    });
  } else {
    if (check == true) {
        $(".window").click(function(){
            $(".window").hide('fast');
        });
    } else {
        //do something
    }
  }
});
4

1 回答 1

1

好的,让我们尝试一点一点地解决这个问题。

你的代码在里面运行$(document).ready(function() {}); ,正如其他人告诉你的那样,if (start == false) {}这部分永远不会运行:else{},因为当页面加载时,下一个start总是设置为false( var start = false;),

$("#checkexist").click(function(){
        if (this.checked) {
            check = true;
        }
    });

可以替换为:$('#checkexist').is('checked')将返回truefalse基于复选标记。true已选中,false未选中。

现在,假设我们知道这一点,并且我们知道您想在单击按钮时运行它:

$('#run').on('click', function(){
    // close the start and back
    $(".start,.back").fadeOut('slow');
    if ($('#checkexist').is(':checked'))
    {
        // checkbox is checked, close the .window
        $(".window").hide('fast');
    }else{
        //checkbox was not checked, what to do?
    }
});

有一个小的语法错误。现在工作正常。你可以在这里看到它的工作:http: //jsfiddle.net/fp7kV/8/

抱歉,错过了:

于 2012-09-21T18:34:03.907 回答