function fire(){//点击页面响应这个函数
var zidan=document.createElement('div');
        zidan.id='zidan';
zidan.style.left='79px';
zidan.style.top='180px';
zidan.style.position='absolute';
zidan.style.width='15px';
zidan.style.height='5px';
zidan.style.backgroundColor='blue';
$('div').appendChild(zidan);
window.setInterval('movezidan(zidan)',100);//子弹创建后就不停的移动
}
function movezidan(zidan){
var left = zidan.style.left;
left = parseInt(left.substr(0, left.length - 2));
left+=15;
if(left>500){
deleteElement('zidan');
}
zidan.style.left=left+'px';
}
问题来了:只能同时发一颗子弹,当第一个子弹消失后才能发第二颗,要不子弹就卡死不动了。

解决方案 »

  1.   

    zidan.id='zidan';
    这句去掉就可以创建多个子弹了
    id在整个页面不允许重复
      

  2.   


    不用id你就找不到加载的标签了?
    数组保存所有加载的子弹div不就行了,你这样的js基础写游戏,挺难的,不打击你了,加油吧,写小游戏也是提升水平的好方法
      

  3.   

    window.setInterval('movezidan(zidan)',100);这里改成window.setInterval(function(){
        movezidan(zidan);
    },100);即可。因为想你那样写的话,JS会去全局对象里找zidan这个变量,又因为找不到,所以就会根据dom的ID去找,于是每次只能找到一个。这个还是设计setInterval作用域的问题,第一个参数是字符串的话,作用域是window,所以以后这样的函数还是写成下面那种形式,避免不必要的错误。
      

  4.   


    不用id你就找不到加载的标签了?
    数组保存所有加载的子弹div不就行了,你这样的js基础写游戏,挺难的,不打击你了,加油吧,写小游戏也是提升水平的好方法嗯,尽量尝试多的方法吧