Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的高效方法_Javascript_Jquery - Fatal编程技术网

JavaScript中的高效方法

JavaScript中的高效方法,javascript,jquery,Javascript,Jquery,您好,如何在JavaScript中多次使用一个方法而不重复和生成另一个方法。因为我所做的是,我生成了一个具有相同字段和代码的方法,但唯一的区别是id。我需要每个方法的一个参数,即id function enemyGet() { new enemyMove2() new enemyMove() new enemyMove3() } function enemyMove2() { var enemyimage = document.getElementByI

您好,如何在JavaScript中多次使用一个方法而不重复和生成另一个方法。因为我所做的是,我生成了一个具有相同字段和代码的方法,但唯一的区别是id。我需要每个方法的一个参数,即id

function enemyGet() {

    new enemyMove2()
    new enemyMove()
    new enemyMove3()
}

  function enemyMove2() {

    var enemyimage = document.getElementById("enemy");
        var leftenemy = parseInt(enemyimage.style.left);
        var topenemy = parseInt(enemyimage.style.top);
        var time = setTimeout("enemyMove2()", 20)

        if (leftenemy < leftplayer) {
            leftenemy = leftenemy + 5;

        }
        if (leftenemy > leftplayer) {
            leftenemy = leftenemy - 5;

        }

        if (topenemy < topplayer) {
            topenemy = topenemy + 5;
        }
        if (topenemy > topplayer) {
            topenemy = topenemy - 5;
        }

        enemyimage.style.left = leftenemy + "px";
        enemyimage.style.top = topenemy + "px";

        var hit_list = $("#x").collision(".lollol");
        hit_list.remove();

}

function enemyMove() {


    var enemyimage = document.getElementById("enemy2");
    var leftenemy = parseInt(enemyimage.style.left);
    var topenemy = parseInt(enemyimage.style.top);
    var time = setTimeout("enemyMove()", 20)

    if (leftenemy < leftplayer) {
        leftenemy = leftenemy + 5;

    }
    if (leftenemy > leftplayer) {
        leftenemy = leftenemy - 5;

    }

    if (topenemy < topplayer) {
        topenemy = topenemy + 5;
    }
    if (topenemy > topplayer) {
        topenemy = topenemy - 5;
    }

    enemyimage.style.left = leftenemy + "px";
    enemyimage.style.top = topenemy + "px";

    var hit_list = $("#x").collision(".lollol");
    hit_list.remove();

}

function enemyMove3() {


    var enemyimage = document.getElementById("enemy3");
    var leftenemy = parseInt(enemyimage.style.left);
    var topenemy = parseInt(enemyimage.style.top);
    var time = setTimeout("enemyMove3()", 20)

    if (leftenemy < leftplayer) {
        leftenemy = leftenemy + 5;

    }
    if (leftenemy > leftplayer) {
        leftenemy = leftenemy - 5;

    }

    if (topenemy < topplayer) {
        topenemy = topenemy + 5;
    }
    if (topenemy > topplayer) {
        topenemy = topenemy - 5;
    }

    enemyimage.style.left = leftenemy + "px";
    enemyimage.style.top = topenemy + "px";

    var hit_list = $("#x").collision(".lollol");
    hit_list.remove();

}
函数enemyGet(){
新的enemyMove2()
新的enemyMove()
新的enemyMove3()
}
函数enemyMove2(){
var enemyimage=document.getElementById(“敌人”);
var leftbenefy=parseInt(enemyimage.style.left);
var topfeary=parseInt(enemyimage.style.top);
var time=setTimeout(“enemyMove2()”,20)
如果(左敌人<左玩家){
左敌人=左敌人+5;
}
如果(左敌人>左玩家){
左敌人=左敌人-5;
}
如果(顶层<顶层){
顶级敌人=顶级敌人+5;
}
如果(顶级敌人>顶级玩家){
Top敌军=Top敌军-5;
}
enemyimage.style.left=左敌人+“px”;
enemyimage.style.top=top敌军+px;
var hit_list=$(“#x”).collision(“.loll”);
点击列表。删除();
}
函数enemyMove(){
var enemyimage=document.getElementById(“enemy2”);
var leftbenefy=parseInt(enemyimage.style.left);
var topfeary=parseInt(enemyimage.style.top);
var time=setTimeout(“enemyMove()”,20)
如果(左敌人<左玩家){
左敌人=左敌人+5;
}
如果(左敌人>左玩家){
左敌人=左敌人-5;
}
如果(顶层<顶层){
顶级敌人=顶级敌人+5;
}
如果(顶级敌人>顶级玩家){
Top敌军=Top敌军-5;
}
enemyimage.style.left=左敌人+“px”;
enemyimage.style.top=top敌军+px;
var hit_list=$(“#x”).collision(“.loll”);
点击列表。删除();
}
函数enemyMove3(){
var enemyimage=document.getElementById(“enemy3”);
var leftbenefy=parseInt(enemyimage.style.left);
var topfeary=parseInt(enemyimage.style.top);
var time=setTimeout(“enemyMove3()”,20)
如果(左敌人<左玩家){
左敌人=左敌人+5;
}
如果(左敌人>左玩家){
左敌人=左敌人-5;
}
如果(顶层<顶层){
顶级敌人=顶级敌人+5;
}
如果(顶级敌人>顶级玩家){
Top敌军=Top敌军-5;
}
enemyimage.style.left=左敌人+“px”;
enemyimage.style.top=top敌军+px;
var hit_list=$(“#x”).collision(“.loll”);
点击列表。删除();
}

在这种情况下,您可以参数化不同调用之间的值

您可以将不同的
id
作为参数传递给
enemyMove
方法

function enemyMove(id) {


    var enemyimage = document.getElementById(id);
    var leftenemy = parseInt(enemyimage.style.left);
    var topenemy = parseInt(enemyimage.style.top);
    var time = setTimeout(function(){
        enemyMove(id);
    }, 20)

    if (leftenemy < leftplayer) {
        leftenemy = leftenemy + 5;

    }
    if (leftenemy > leftplayer) {
        leftenemy = leftenemy - 5;

    }

    if (topenemy < topplayer) {
        topenemy = topenemy + 5;
    }
    if (topenemy > topplayer) {
        topenemy = topenemy - 5;
    }

    enemyimage.style.left = leftenemy + "px";
    enemyimage.style.top = topenemy + "px";

    var hit_list = $("#x").collision(".lollol");
    hit_list.remove();

}
使用参数:

function enemyGet() {
    // pass the id as a argument to the function
    enemyMove("enemy2")
    enemyMove("enemy")
    enemyMove("enemy3")
}

function enemyMove(enemy) {
    // the variable enemy is the id passed as an argument to the function 
    var enemyimage = document.getElementById(enemy);
        var leftenemy = parseInt(enemyimage.style.left);
        var topenemy = parseInt(enemyimage.style.top);
        // Pass the parameter in timeout as well. You have access to enemy variable due to concept of closure
        var time = setTimeout(function(){enemyMove(enemy)}, 20)

        if (leftenemy < leftplayer) {
            leftenemy = leftenemy + 5;

        }
        if (leftenemy > leftplayer) {
            leftenemy = leftenemy - 5;

        }

        if (topenemy < topplayer) {
            topenemy = topenemy + 5;
        }
        if (topenemy > topplayer) {
            topenemy = topenemy - 5;
        }

        enemyimage.style.left = leftenemy + "px";
        enemyimage.style.top = topenemy + "px";

        var hit_list = $("#x").collision(".lollol");
        hit_list.remove();

}
函数enemyGet(){
//将id作为参数传递给函数
enemyMove(“enemy2”)
敌人行动(“敌人”)
enemyMove(“enemy3”)
}
功能enemyMove(敌人){
//变量是作为参数传递给函数的id
var enemyimage=document.getElementById(敌人);
var leftbenefy=parseInt(enemyimage.style.left);
var topfeary=parseInt(enemyimage.style.top);
//同时在超时中传递参数。由于闭包的概念,您可以访问敌方变量
var time=setTimeout(函数(){enemyMove(敌人)},20)
如果(左敌人<左玩家){
左敌人=左敌人+5;
}
如果(左敌人>左玩家){
左敌人=左敌人-5;
}
如果(顶层<顶层){
顶级敌人=顶级敌人+5;
}
如果(顶级敌人>顶级玩家){
Top敌军=Top敌军-5;
}
enemyimage.style.left=左敌人+“px”;
enemyimage.style.top=top敌军+px;
var hit_list=$(“#x”).collision(“.loll”);
点击列表。删除();
}

您可以使用方括号表示法引用函数:

// Store reference to global object for use wherever
var global = this;

...
  var n = 3;

  // Call method based on value of n
  global['enemyMove' + n]();


您可以将函数设置为全局/窗口对象以外的某些对象的属性(方法)。

是否有一种方法可以只使用一个方法,但具有不同的id?是的,这也是我的问题。。但有没有办法让它继续移动?@user2242573不是你,我是说阿伦普约翰尼。
setTimeout
没有传递参数-这是一个问题。有没有一种方法可以只使用一种方法,但具有不同的id?是的。您正在将id作为参数传递给函数使用
new
调用函数的任何原因?要停止计时器,仅当没有冲突时才需要调用setTimeout。i、 e基于命中的值_list@BasaratAli我没有意识到新的
出现在OP:)
// Store reference to global object for use wherever
var global = this;

...
  var n = 3;

  // Call method based on value of n
  global['enemyMove' + n]();