0

JavaScript/jQueryに問題があります。ダイアログが表示された後、checboxがチェックされている場合、変数の値を変更しようとしていますが、値をチェックすると機能しません。代わりに何ができますか、またはこのコードは間違っていますか?

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れると、常にfalsevar start = false;)nextに設定されるため、

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

次のように置き換えることができます:これは、チェックマークに基づいて$('#checkexist').is('checked')返されtrueます。チェック済みの場合、チェックなしの場合。falsetruefalse

今、私たちがそれを知っていて、ボタンがクリックされたときにこれを実行したいと思っていると仮定します:

$('#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 に答える