我有以下功能。当我第一次单击时,它会返回一个随机数,但所有后续点击始终返回相同的数字。怎么不刷新?
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#btn-get-random-image').click(function () {
$('#my-img').attr('src', '<?php echo $pics[array_rand($pics, 1)]; ?>');
});
});
</script>
答案 0 :(得分:5)
这是因为你使用PHP来生成随机数,并且不可能在调用JS函数时刷新它 - 它在那时嵌入在HTML中。
答案 1 :(得分:1)
也可以使用live
代替click
$(document).ready(function(){
$('#btn-get-random-image').live("click", function () {
// your works here
}
});
还可以查看jquery live
答案 2 :(得分:0)
您的PHP正在创建JS代码,该代码在呈现页面时会被发送到浏览器。每次调用JS函数都会运行渲染页面时存在的函数。
答案 3 :(得分:0)
正如其他人所说,你使用的是PHP,它在服务器上执行一次并作为原始输出发送,因此图像不会改变。试试这个!
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
var myPics = <?php echo json_encode($pics); ?>;
$(document).ready(function() {
$('#btn-get-random-image').click(function () {
var index;
do {
index = Math.floor(Math.random() * myPics.length);
} while ( typeof myPics[index] == 'undefined' );
$('#my-img')
.attr('src', myPics[index]);
});
});
</script>
这使用PHP的JSON编码器将您的数组转储到javascript,然后您的函数随机选择要显示的数组中的图像。 do/while
循环可能没有必要,我的测试显示在数千次迭代中具有相当好的近均匀分布,但仍然存在。