【发布时间】:2011-10-29 03:28:19
【问题描述】:
抱歉我的英语不好。
我有这样一个问题:为什么是第一个代码:
<html>
<head>
<style>
body { position: relative; }
table { position: absolute; top: 200px; left: 200px; }
div { width: 100px; height: 100px; background-color: black; margin: auto auto; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
for(i = 0; i < 100; i++) {
var j = i + '';
$("#menu_div_" + j).mouseover(function(){
$("#menu_div_" + j).clearQueue();
$("#menu_div_" + j).stop();
$("#menu_div_" + j).animate({
width: 150,
height: 150
}, 600
);
});
$("#menu_div_" + j).mouseout(function(){
$("#menu_div_" + j).clearQueue();
$("#menu_div_" + j).stop();
$("#menu_div_" + j).animate({
width: 100,
height: 100
}, 600
);
});
}
});
</script>
</head>
<body>
<table id="menu">
<? for($i = 0; $i < 10; $i++) { ?>
<tr>
<? for($j = 0; $j < 10; $j++) { ?>
<td>
<div id="menu_div_<? echo ($i * 10) + $j; ?>">
</div>
</td>
<? } ?>
</tr>
<? } ?>
</table>
</body>
</html>
与此代码中的工作方式不同(“for”循环是用 php 编写的):
<html>
<head>
<style>
body { position: relative; }
table { position: absolute; top: 200px; left: 200px; }
div { width: 100px; height: 100px; background-color: black; margin: auto auto; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
<?php for($i = 0; $i < 100; $i++) { ?>
$("#menu_div_" + <?php echo $i; ?>).mouseover(function(){
$("#menu_div_" + <?php echo $i; ?>).clearQueue();
$("#menu_div_" + <?php echo $i; ?>).stop();
$("#menu_div_" + <?php echo $i; ?>).animate({
width: 150,
height: 150
}, 600
);
});
$("#menu_div_" + <?php echo $i; ?>).mouseout(function(){
$("#menu_div_" + <?php echo $i; ?>).clearQueue();
$("#menu_div_" + <?php echo $i; ?>).stop();
$("#menu_div_" + <?php echo $i; ?>).animate({
width: 100,
height: 100
}, 600
);
});
<?php } ?>
});
</script>
</head>
<body>
<table id="menu">
<? for($i = 0; $i < 10; $i++) { ?>
<tr>
<? for($j = 0; $j < 10; $j++) { ?>
<td>
<div id="menu_div_<? echo ($i * 10) + $j; ?>">
</div>
</td>
<? } ?>
</tr>
<? } ?>
</table>
</body>
</html>
快速解释:
在第一个中,所有“div”标签中的“events”都会改变最后一个元素的大小(我不知道为什么)。在第二个中 - 每个“div”中的“事件”会导致相同“div”的大小发生变化(在我看来,第一个代码中也应该发生这种情况)。
如何更正第一个代码以使其像第二个一样工作?
【问题讨论】:
-
你有没有将静态 js 代码与 PHP 动态生成的代码进行比较?
-
您应该在 for 循环之前声明
var i;。此外,不需要var j = i + '';$("#menu_div_" + i)可以正常工作。 -
我不完全知道您所说的“比较”是什么意思,但我认为 - 是的。两个代码都应该有相同的想法。 (我忘了补充说我只在一周内用 javascript 编程,所以比较可能是错误的。)
标签: php javascript jquery for-loop