如何在jquery中添加js var

时间:2013-09-26 16:45:31

标签: javascript jquery html

不知怎的,我不能让var“转”变。

--------------'#a3'是一个div -----------------

对于所有代码,请转到here

以下是一些js / jquery:

var turn = 1;

if (turn === 1) {

//----------------------------red
if (da3 === false) {
    $('#a3').click(function () {
        $(this).css("background-color", "red");
        turn = 0;
    });
}

if (turn === 0) {

//----------------------------blue
if (da3 === false) {
    $('#a3').click(function () {
        $(this).css("background-color", "blue");
       turn = 1;
    });
}

这是我用过的一些css:

div {
display: inline-block;
background-color:grey;
width : 150px;
height: 150px;
}

3 个答案:

答案 0 :(得分:1)

这是因为你只添加一个只做一件事的事件处理程序。它不会神奇地添加另一个。

在点击事件中执行if / else逻辑。

答案 1 :(得分:0)

您当前的代码结构如下:

var turn = 1;  // red turn first
if (turn === 1) {
    // assign click handlers for red moves
}
if (turn === 0) {
    // assign click handlers for blue moves
}

这个问题是,这里将使用的唯一点击处理程序是if (turn === 1)块中定义的处理程序。修改turn时不会重新评估代码,因此永远不会使用蓝色的点击处理程序。

相反它应该看起来像这样:

var turn = 1;  // red turn first
// example click handler:
$('#a3').click(function () {
    // check whose turn it is *inside* of the click handler
    if (turn === 0) {
        $(this).css("background-color", "blue");
        turn = 1;
    } else {
        $(this).css("background-color", "red");
        turn = 0;
    }
});
// other click handlers like the above (or better yet, reuse the same function)

答案 2 :(得分:0)

如果要通过单击a3元素来切换背景颜色,则需要在事件处理程序中执行if / else检查

bg_state = 0;

$('#a3').click(function () {
    if (bg_state===0) {
       $(this).css("background-color", "blue");
        bg_state=1;
    } else {
       $(this).css("background-color", "red");
        bg_state=0;
    }
});

http://jsfiddle.net/ADUV9/

事件处理程序的设置仅在页面加载时执行一次!