2012-03-29 202 views
0

我想檢查innerHtml是否有X或O,所以我不能再添加任何其他東西,但它不工作。它在添加校驗碼後停止,我在這裏嘗試做一個簡單的X O遊戲,以更熟悉JavaScript和jquery。

另外我不確定是否可以用jQuery來做到這一點。

<script type="text/javascript" > 

    function ranFun() { 
     return Math.floor((Math.random() * 9) + 1); 
    } 

    var a; 

    function Elment(a) {   
     document.getElementById("td" + a).innerHTML = "O"; 
    }  

    function call() { 
      var x = ranFun(); 
     switch (x) { 
      case 1:case 2 :case 3: case 4 :case 5 : case 6 : case 7 : case 8 : case 9 : 
       Elment(x); 
       break; 
      default: 
       break; 
     } 
    } 

    function tdElm(c) { 

     if ($('#td1').text() === "x" || $('#td1').text() == "o") 
      return false; 
     else { 
      document.getElementById("td" + c).innerHTML = "x"; 
      call(); 
     } 

    } 

</script> 

<BODY> 

<center> 
<h1 >"  X ,O Game "</h1> 
<table > 
    <tr> 
     <td id="td1" onclick="tdElm(1);" ></td> 
     <td id="td2" onclick="tdElm(2);"></td> 
     <td id="td3" onclick="tdElm(3);"></td> 
    </tr> 

    <tr> 
     <td id="td4" onclick="tdElm(4);"></td> 
     <td id="td5" onclick="tdElm(5);"></td> 
     <td id="td6" onclick="tdElm(6);"></td> 
    </tr> 

    <tr> 
     <td id="td7" onclick="tdElm(7);"></td> 
     <td id="td8" onclick="tdElm(8);"></td> 
     <td id="td9" onclick="tdElm(9);"></td> 
    </tr> 
</table> 
</center> 

</BODY> 
+3

請妥善縮進代碼。 – 2012-03-29 16:53:55

+1

爲什麼當$已經可用時使用document.getElementById? – 2012-03-29 16:57:49

+1

不好的縮進使得其他人不想幫助你,它表明缺乏努力使問題可以理解 – 2012-03-29 16:58:19

回答

0

如果你想設置元素的文本必須使用

$('#td'+c).text("x") 

文本方法用字符串參數是有效

var c = 1; 
$('#td'+c).text() 

http://api.jquery.com/text/

0

你不必須檢查文本是否等於x等於o,其中一個使其他超級。

當您使用jQuery設置元素的文本時,您在調用text時提供的值,您不會將其分配給該函數的返回值。

我假設你想在使用c參數時也檢查這個值。

function tdElm(c) { 
    if ($('#td' + c).text() == "o") { 
    $('#td' + c).text("x"); 
    } 
} 
+0

我認爲這可能會有所幫助,但是如果你想要這個功能,你該怎麼做:tdElm(c)if($('#td'+ c).text()==「o」){ //什麼也不做 } else {$('#td'+ c).html ='x'} } – 2012-03-29 17:26:46

+0

@Mz:只要將'=='改成'!='。 – Guffa 2012-03-29 17:36:41

+0

非常感謝,這會有所幫助。 – 2012-03-29 17:42:52

0

這2點東西,就JavaScript語法去,是不是真的有什麼不同:

document.getElementById("td" + c); 
$('#td'+c) 

在這兩種情況下,你需要一個字符串,一個新值追加到該字符串,然後將結果作爲參數傳遞給函數。因此,只要接受'#td1'等字符串,就可以接受'#td' + c的格式。這不是關於jQuery,只是簡單的JavaScript。


至於這樣的:

$('#td'+c).text() === "x" ; 

這應該工作,但是我相信你的問題是空白。文本中可能會有一些空格,使其不等於"x"。 jQuery提供了一個$.trim()函數來裁剪這些情況下的空白。

if ($.trim($('#td'+c).text()) === "x") { 

或者使用正則表達式?

if (/x/.test($('#td'+c).text())) { 
0

您的代碼非常難以閱讀。我匆匆匆匆幾乎工作的腳本讓你閱讀和理解http://jsfiddle.net/mendesjuan/MQ9Nr/

但是,看起來你需要的東西,你只需要檢查文本是否爲空。這裏有幾個建議

  • 不要從HTML設置處理
  • 不需要通過一些進入處理程序,處理程序知道TD被點擊

JS

$(function(){ 
    var turn = 0; 
    var xos = ["x", "o"]; 
    $("td").click(function(){ 
    var $this = $(this); 
     if ($this.text()) { 
     return; 
     } else { 
     $this.text(xos[turn]); 
     turn = (turn + 1) % 2; 
     } 
    }); 
}); 

HTML

<h1 >X ,O Game</h1> 
<table > 
    <tr> 
     <td id="td1"></td> 
     <td id="td2"></td> 
     <td id="td3"></td> 
    </tr>  
    <tr> 
     <td id="td4"></td> 
     <td id="td5"></td> 
     <td id="td6"></td> 
    </tr> 
    <tr> 
     <td id="td7"></td> 
     <td id="td8"></td> 
     <td id="td9"></td> 
    </tr> 
</table> 
0

有相當多的事情你的代碼錯誤,

我建議你先看看這個快速劈我放在一起這是工作,隨時提問。

http://jsfiddle.net/blowsie/TKq2H/4/

function call() { 
    var x = Math.floor((Math.random() * 9) + 1); 
    if ($('#td' + x).text() === "x" || $('#td' + x).text() == "o") { 
     call(); 
    } 
    else { 
     $("#td" + x).text("o"); 
    } 

} 
$('td').click(function() { 
    var no = $(this).data('no') 
    if ($('#td' + no).text() === "x" || $('#td' + no).text() == "o") return false; 
    else { 
     $("#td" + no).text("x"); 
     call(); 
    } 
});​ 


<center> 
<h1 >"  X ,O Game "</h1> 
<table > 
    <tr> 
     <td id="td1" data-no="1" ></td> 
     <td id="td2" data-no="2"></td> 
     <td id="td3" data-no="3"></td> 
    </tr> 

    <tr> 
     <td id="td4" data-no="4"></td> 
     <td id="td5" data-no="5"></td> 
     <td id="td6" data-no="6"></td> 
    </tr> 

    <tr> 
     <td id="td7" data-no="7"></td> 
     <td id="td8" data-no="8"></td> 
     <td id="td9" data-no="9"></td> 
    </tr> 
</table> 
</center> 
​ 
相關問題