我的大兄弟,你的reload会导致页面刷新,页面上所有的东西生命周期都会重来一次
你的shua函数自然也是
如果页面不刷新,调用某个函数的话,那么这个函数(也包括setInterval和settimeout)在它的生命周期当中都是存在的,所以会重复的调用,故改成下面这样 setInterval是有效果的:
function invoke(){alert("invoke")
}
function start(){
setInterval(invoke,2000)
}
就像前面说的,当这个程序调用start正常运行的时候,你一刷新页面,那么这个循环调用的效果就没了,你必须调用一次start才可以正常循环触发,因为页面刷新,页面上所有的内容(DOM,JS,CSS)都会重新构造一遍
你的js是封装在js文件里还是写在jsp页面的script标签里?如果想每一个函数都执行,给你一个最简单的方法,你把js写在jsp页面的script里。并且每一个函数都写一个script标签,比如:<script>
function aa(){
//我有错误
}
</script>
<script>
function bb(){
//我依然执行
}
</script>
这样写,互不影响。记得一定要写在jsp页面中。
方法有两中,一种是不用javascript改用java的servlet,修改其中的init方法(推荐)但如果楼主一定要用javascript,可以使用cookie、session等,具体思路就是对行为作一个记录并存入cookie或session变量,每次刷新页面就读去这个变量,根据变量的值来判断某行为是否有被执行过