2011-01-21 17 views
0

私はちょっと "ゲーム"を作ろうとしていて、なんらかの理由で、checkedのチェックボックスを開くと、私のスクリプトがうまくいきません...時々動作します。私が逃した何らかのエラーがありますか? loselife()関数内で定義されたスクリプトがチェックボックスで機能しないのはなぜですか?

<html> 
<head> 
<title>Untitled Document</title> 
<script> 
var check = "showcheck"; 
var number = 1234; 
var lvl = 1; 
var oldlvl = 1; 
var multiplier = 10000; 
var start = 1; 

function exefunction() { 
    document.getElementById("boxv").focus(); 
    if (check == "showcheck") { 
     document.getElementById("message").innerHTML = "What was the number?"; 
     document.getElementById("num").style.display = "none"; 
     document.getElementById("box").style.display = "inline"; 
     document.getElementById("boxv").focus(); 
     check = "checknum"; 
    } 
    else if (check == "checknum") { 
     if (document.getElementById("boxv").value == number) { 
      document.getElementById("message").innerHTML = "CORRECT!"; 
      document.getElementById("boxv").style.color = "#00DD00"; 
      document.getElementById("boxv").value = number; 
      document.getElementById("level").innerHTML = "Level: " + lvl; 
      lvl++; 
     } 
     else if (document.getElementById("boxv").value != number) { 
      document.getElementById("message").innerHTML = "INCORRECT!"; 
      document.getElementById("boxv").style.color = "#DD0000"; 
      document.getElementById("boxv").value = number; 
      document.getElementById("level").innerHTML = "Level: " + lvl; 
      if (lvl>1) {lvl--;} 
      loselife(); 
     } 
     check = "showmem"; 
    } 
    else if (check == "showmem") { 
     if (lvl == oldlvl + 10) { 
      oldlvl = lvl; 
      multiplier = multiplier * 10; 
      document.getElementById("boxv").maxLength = multiplier.toString().length - 1; 
     } 
     else if (lvl < oldlvl) { 
      oldlvl = lvl - 10; 
      multiplier = multiplier/10; 
      document.getElementById("boxv").maxLength = multiplier.toString().length - 1; 
     } 
     number = Math.floor(Math.random() * multiplier/10 * 9) + multiplier/10; 
     document.getElementById("boxv").style.color = "#000000"; 
     document.getElementById("boxv").value = ""; 
     document.getElementById("message").innerHTML = "Memorize this number: "; 
     document.getElementById("num").innerHTML = number; 
     document.getElementById("num").style.display = "inline"; 
     document.getElementById("box").style.display = "none"; 
     check = "showcheck"; 
    } 
} 

function loselife(){ 
    var life = 4; 
    var hearts = "&#9829; "; 
    alert(document.getElementById("lifebox").checked); 
} 
function submitenter() { 
    var keycode = window.event.keyCode; 
    if (keycode == 13) { 
     if (start === 0) {exefunction();} 
     else {startfunc();} 
    } 
    if (keycode < 47 || keycode > 58) { 
     return false; 
    } 
} 

function startfunc() { 
    document.getElementById("button").innerHTML = '<input name="" type="button" value="OK" onClick="exefunction()"/>'; 
    document.getElementById("level").innerHTML = "Level: " + lvl; 
    document.getElementById("message").innerHTML = "Memorize this number: "; 
    document.getElementById("num").style.display = "inline"; 
    document.getElementById("boxv").value = ""; 
    document.getElementById("box").style.display = "none"; 
    if (document.getElementById("lifecheck").checked === true) { 
     document.getElementById("life").innerHTML = "&#9829; &#9829; &#9829; &#9829; &#9829; "; 
    } 
    else if (document.getElementById("lifecheck").checked === false) { 
     document.getElementById("life").innerHTML = ""; 
    } 
    if (document.getElementById("timercheck").checked === true) { 
     document.getElementById("timer").innerHTML = "3:00"; 
    } 
    else if (document.getElementById("timercheck").checked === false) { 
     document.getElementById("timer").innerHTML = ""; 
    } 
    start = 0; 
} 

function tests() { 
    alert(lfckv); 
} 
</script> 
<style type="text/css"> 
#level, #life, #timer{ 
    color: #666; 
} 
* { 
    text-align: center; 
} 
#num { 
    display: none; 
} 
#num { 
    font-size: x-large; 
} 
#body { 
    margin-top: 250px; 
    margin-right: auto; 
    margin-bottom: 100px; 
    margin-left: auto; 
} 
body { 
    background-color: #6FF; 
} 
</style></head> 
<body onKeyPress="return submitenter()" > 
<div id="body"> 
<span id="level"></span> 
<table align="center"> 
    <tr> 
    <td width="200" height="50" align="center" valign="middle"><span id="message">What level would you like to begin at?</span></td> 
    <td width="200" height="50" align="center" valign="middle"><span id="num">1234</span><span id="box"><input type="text" id="boxv" maxlength="4" value="1"/></span></td> 
    </tr> 
</table> 
<table align="center"> 
    <tr> 
    <td width="200" id="life"><label><input id="lifecheck" type="checkbox" >Lives</label></td> 
    <td id="button"><input type="button" value="OK" onClick="startfunc()"/></td> 
    <td width="200" id="timer"><label><input id="timercheck" type="checkbox" >Timer</label></td> 
    </tr> 
</table> 
<input name="" type="button" onClick="tests()" value="tests()"> 
</div> 
</body> 
</html> 
+1

javascriptコンソールには何もありませんか? 「フリップアウト」はまさに有用な診断ではありません。 –

答えて

0

AHAH!私は問題を理解した。どうやら、チェックボックスの可視性をnoneに設定すると、なんらかの理由でcheckvalueがnullに設定されることになります。私はそれがチェックバリューを保つことを期待していましたが、何らかの理由でそれはしません。

0

lifeboxありえません。さらにtest()関数をチェックすると、alert()ステートメントに定義されていない変数があります。

Google Chrome(またはデバッグに役立つブラウザ)を使用している場合は、コードラインを使ってデバッグすることをおすすめします。

+0

がクロムに​​入っていますが、私は "Uncaught TypeError:ヌルの" checked 'をチェックできません " – Sean

+0

Sean、おそらく' document.getElementById( "lifecheck") '' '' lifebox "'を行うことを意図していましたか?それがここのポイントです。また、ChromeとIE8の開発ツールとFirebugには、このエラーがどこで発生するかを確認したり、その時点でどのような変数があるかを把握するために使用できる「エラー時に破損する」オプションがあります。 –

0

私は結論がブール値ではないので、チェックボックスの状態をチェックするために単純な等価性を使う方がよいと思います。

だから、そのようなものになるだろう:

if (document.getElementById("lifecheck").checked == true) { 

または単に

if (document.getElementById("lifecheck").checked) { 

代わりの

if (document.getElementById("lifecheck").checked === true) { 
関連する問題