1

我已经被一个问题困扰了 2-3 天了。我无法从我在这里或其他来源看到的任何帖子中找到补救措施。我想也许我可以在自己的帖子中得到一些帮助。这是代码:

    $grn="/img/grn.png";
    $red="/img/red.png";
    echo "<script>";

    $cnt=0;
    for($i=0;$i<3;$i++)
    {
        $cnt=$cnt+100;
        for($a=1;$a<30;$a++)
        {
            $iid=$cnt+$a;

            echo    "$(document).ready(function()
                    {
                        $(\"#".$iid."\").click(function()
                        {
                            $.get(\"test.php\",{ iddd : ".$iid."},function(data) 
                            {

                                if(data==1)
                                {
                                    $(\"#".$iid."\").css('background-image',url(\"img/grn.png\"));
                                    $(\"#dene\").html(\"<p>GREEN ".$iid."</P>\");
                                }

                                if(data==0)
                                {
                                    $(\"#".$iid."\").css('background-image',url(\"img/red.png\"));
                                    $(\"#dene\").html(\"<p>RED ".$iid."</P>\");
                                }
                            }) 
                        }) 
                    });";
        }
    }
            echo "</script>";

我知道我的压痕不是很好。但是我有点着急。我的问题是,这条线:

      $(\"#".$iid."\").css('background-image',url(\"img/grn.png\"));

不管用。当它不执行时,jquery 也不会在同一 if 语句中执行另一条语句。知道为什么会发生吗?提前致谢。

4

2 回答 2

3

你的 url css 需要用引号引起来

                                        v                    v
$(\"#".$iid."\").css('background-image','url(\"img/grn.png\")');

PS。快点与否,练习正确的缩进/代码格式!一旦你习惯了它并不需要很长时间。

document.ready当您只需要一个时,您还创建了大量的s。这是一个经过清理的版本,在 PHP 中更易于阅读:

<?php
    $grn="/img/grn.png";
    $red="/img/red.png";
    echo "<script>
        $(document).ready(function(){
    ";
    $cnt=0;
    for ($i=0;$i<3;$i++) {
        $cnt=$cnt+100;
        for($a=1;$a<30;$a++) {
            $iid=$cnt+$a;
            echo <<<EOF

            $("#{$iid}").click(function() {
                $.get("test.php",{ iddd : {$iid}},function(data) {

                    if(data==1) {
                        $("#{$iid}").css('background-image','url("img/grn.png")');
                        $("#dene").html("<p>GREEN {$iid}</P>");
                    }
                    if(data==0) {
                        $("#{$iid}").css('background-image','url("img/red.png")');
                        $("#dene").html("<p>RED {$iid}</P>");
                    }
                });
            });
EOF;
        }
    }
    echo "
        });
    </script>";
?>

在 JS 中:http ://codepad.org/SVa2If8H


更好的解决方案

以整数开头的 Id 属性不是有效的 W3 HTML。您应该重新处理您的 html 元素,可能在数据属性中包含 ID:

<span data-iid="123">Click Me</span>

那么你就不需要 PHP 生成的 JS,只需这一点:

$(document).ready(function(){

    $("[data-iid]").click(function() {
        var iid = $(this).attr('data-iid');
        $.get("test.php",{ iddd : iid},function(data) {

            if(data==1) {
                $(this).css('background-image','url("img/grn.png")');
                $("#dene").html("<p>GREEN " + iid + "</P>");
            }
            if(data==0) {
                $(this).css('background-image','url("img/red.png")');
                $("#dene").html("<p>RED " + iid + "</P>");
            }
        });
    });
});
于 2013-04-24T17:08:44.340 回答
2

您需要为背景图像设置的值加上引号...

$(\"#".$iid."\").css('background-image','url(\"img/grn.png\")');
于 2013-04-24T17:08:28.160 回答