-2

我很困惑为什么这没有显示“divPIC”div中的任何图片。我已经测试了“rate”变量,它确实显示了一个数字。基本上,如果评级在 if, else 语句中,这应该只显示星级图片。不过什么都没有出现。

Javascript:

 var rate = <?php echo json_encode($rate); ?>;

 if (rate == 0) {
    document.getElementById('divPIC').innerHTML = "<img src='images/0star.png'>";
    }
    else if (0 < rate && 4 > rate) {
    document.getElementById('divPIC').innerHTML = "<img src='images/1star.png'>";
    }
    else if (3 < rate && 6 > rate) {
    document.getElementById('divPIC').innerHTML = "<img src='images/2star.png'>";
    }
    else if (5 < rate) {
    document.getElementById('divPIC').innerHTML = "<img src='images/3star.png'>";
    }

HTML:

<div id="divPIC"></div>
4

2 回答 2

4
<divPIC></div>

这应该改为:

<div id="divPIC"></div>

因为你试图通过它的 id ( getElementById) 来访问它,而不是通过它的节点名。

编辑

此外,而不是使用这个:

var rate = <?php echo json_encode($rate); ?>;

你可能会考虑这个:

var rate = <?php echo intval($rate); ?>;

如果$rate不是整数,你会从json_encode. 相反,intval将始终返回一个整数。

再次编辑:刚刚注意到 igasparetto 击败了我的$rate建议。谢谢!

于 2013-07-30T20:23:06.280 回答
0

像这样写可能会更容易:

var r = <?php echo json_encode($rate); ?>;
if(r<1){ //show 0star img}
else if (r<4){ //show 1star img}
else if (r<6){ //show 2star img}
else{ //show 3star img}

这样你处理的小于零和零。没有理由测试您是否大于之前的限制。

如果你不反对 jquery...

var $divImg = $('#divImg'); 
// do this before the if else
//then you can append
$divImg.append('<img src="thestarimg.png"/>');

试试这个小提琴,我只是使用文本。 http://jsfiddle.net/VgKaN/

于 2013-07-30T20:28:58.797 回答