Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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_Function_Parameters - Fatal编程技术网

Javascript 使用不同参数调用同一函数两次

Javascript 使用不同参数调用同一函数两次,javascript,function,parameters,Javascript,Function,Parameters,Supose我有一个函数,它调用同一个函数两次,每次使用不同的参数,有些类似于: function one(){ two(a,b); two(c,d); } 当我调用函数1时,只执行第一个函数2,而不执行第二个函数。有没有一种方法只在Javascript中实现这一点?不是Jquery 下面是cuestion中的代码,它是一个基于文本的RPG window.onload = init; function init(){ document.onmousedown

Supose我有一个函数,它调用同一个函数两次,每次使用不同的参数,有些类似于:

function one(){
     two(a,b);
     two(c,d);  
}
当我调用函数1时,只执行第一个函数2,而不执行第二个函数。有没有一种方法只在Javascript中实现这一点?不是Jquery

下面是cuestion中的代码,它是一个基于文本的RPG

window.onload = init;

function init(){

    document.onmousedown = function disableselect(e) {return false;};

 /*ELEMENTS*/

    var monsterPicture = document.createElement('div');
    monsterPicture.setAttribute('class', 'monsterPicture');
    monsterPicture.style.position = 'absolute';
    monsterPicture.style.top = '0';
    monsterPicture.style.right = '0';
    monsterPicture.style.bottom = '0';
    monsterPicture.style.left = '0';
    monsterPicture.style.height = '350px';
    monsterPicture.style.width = '350px';
    monsterPicture.style.margin = 'auto';
    monsterPicture.style.backgroundColor = 'grey';
    document.body.appendChild(monsterPicture);

    var textInfo = document.createElement('textarea');
    textInfo.setAttribute('class', 'textInfo');
    textInfo.style.position = 'absolute';
    textInfo.style.top = '0';
    textInfo.style.bottom = '0';
    textInfo.style.right = '0';
    textInfo.style.height = '350px';
    textInfo.style.width = '250px';
    textInfo.style.margin = 'auto 50px auto auto';
    textInfo.style.backgroundColor = 'white';
    textInfo.style.overflowY = 'hidden';
    textInfo.style.resize = 'none';
    textInfo.readOnly = 'true';
    textInfo.disabled = 'true';
    textInfo.style.cursor = "default";
    document.body.appendChild(textInfo);

    var statsArea = document.createElement('div');
    statsArea.setAttribute('class', 'statsArea');
    statsArea.style.position = 'absolute';
    statsArea.style.top = '0';
    statsArea.style.top = '0';
    statsArea.style.bottom = '0';
    statsArea.style.right = '0';
    statsArea.style.height = '350px';
    statsArea.style.width = '200px';
    statsArea.style.margin = 'auto 700px auto auto';
    document.body.appendChild(statsArea);


    var heroInfo =  document.createElement('textarea');
    heroInfo.setAttribute('class', 'heroInfo');
    heroInfo.style.height = '160px';
    heroInfo.style.width = '200px';
    heroInfo.style.marginTop = '10px';
    heroInfo.style.backgroundColor = 'white';
    heroInfo.style.overflowY = 'hidden';
    heroInfo.style.resize = 'none';
    heroInfo.readOnly = 'true';
    heroInfo.disabled = 'true';
    heroInfo.style.cursor = "default";
    document.body.appendChild(heroInfo);

    var monsterInfo =  document.createElement('textarea');
    monsterInfo.setAttribute('class', 'monsterInfo');
    monsterInfo.style.height = '160px';
    monsterInfo.style.width = '200px';
    monsterInfo.style.backgroundColor = 'white';
    monsterInfo.style.overflowY = 'hidden';
    monsterInfo.style.resize = 'none';
    monsterInfo.readOnly = 'true';
    monsterInfo.disabled = 'true';
    monsterInfo.style.cursor = "default";
    document.body.appendChild(monsterInfo);

    statsArea.appendChild(monsterInfo);
    statsArea.appendChild(heroInfo);




    /*CONSTRUCTOR FUNCTIONS*/

    function character (name, hitpoints, armorclass, attackbonus, weapondamage) {
    this.name = name;
    this.hitPoints = hitpoints;
    this.armorClass = armorclass;
    this.attackBonus = attackbonus;
    this.weaponDamage = weapondamage;
    this.stats = function(){
    return  this.name + "\n" +
    "Hit Points: " + this.hitPoints + "\n" +
            "Armor Class: " + this.armorClass + "\n" +
            "Attack Bonus: " + this.attackBonus + "\n" +
            "Weapon Damage: " + this.weaponDamage;
    };
    this.alive = true;
    this.reset = function (){
        this.hitPoints = hitpoints;
        this.armorClass = armorclass;
        this.attackBonus = attackbonus;
        this.weaponDamage = weapondamage;
      };
}

var Arquer = new character("Arquer", 15, 6, 5, 8);  

function selectMonster () {
    var werewolf = new character("Werewolf", 15, 4, 4, 3);
    var goblin = new character("Goblin", 15, 4, 4, 3);
    switch(Math.floor(Math.random()*2)+1){
      case 1: return werewolf;
      case 2: return goblin;
    }
 }


var buttonAttack= document.createElement('input');
buttonAttack.setAttribute('type','button');
buttonAttack.setAttribute('value','Attack');
document.body.appendChild(buttonAttack);

var current_monster = selectMonster();

heroInfo.value = Arquer.stats() + "\n" + "Alive: " + Arquer.alive;
monsterInfo.value = current_monster.stats() + "\n" + "Alive: " + current_monster.alive; 

buttonAttack.onclick = function(){
if (current_monster.hitPoints <= 0){current_monster = selectMonster();monsterInfo.value = current_monster.stats() + "\n" + "Alive: " + current_monster.alive;}  
else{battle(Arquer, current_monster);}
};


function battle (hero, monster){

  if(hero.alive===true && monster.alive===true){
    var heroIniciative = Math.floor(Math.random()*20)+1;
    var monsterIniciative = Math.floor(Math.random()*20)+1;
    var attacker;
    var defender;
    var attackerInfo;
    var defenderInfo;
    /*INICIATIVE ROLL*/
    if (heroIniciative >= monsterIniciative){
        attacker = hero;
        defender = monster;
        attackerInfo = heroInfo;
        defenderInfo = monsterInfo;
        textInfo.value += attacker.name + " attacks first!: " + heroIniciative + " vs " + monsterIniciative + "\n";
        textInfo.scrollTop = textInfo.scrollHeight;
        attack(attacker, defender, attackerInfo, defenderInfo);
        attack(defender, attacker, defenderInfo, attackerInfo);
    }
    else {
    attacker = monster;
    defender = hero;
    attackerInfo = monsterInfo;
    defenderInfo = heroInfo;
        textInfo.value += attacker.name + " attacks first!: " + monsterIniciative + " vs " + heroIniciative + "\n",
        textInfo.scrollTop = textInfo.scrollHeight;
        attack(attacker, defender, attackerInfo, defenderInfo);
        attack(defender, attacker, defenderInfo, attackerInfo);
    }
    check_defeat(attacker, defender, attackerInfo, defenderInfo);
  }
  else {reset (hero, monster);
}
}


function attack (attacker, defender, attackerInfo, defenderInfo){
    var d20 = Math.floor(Math.random()*20)+1;
    var d_wp = Math.floor(Math.random()*attacker.weaponDamage)+1;
    /*ROUND ONE*/
    if (d20+attacker.attackBonus>defender.armorClass){
        textInfo.value += attacker.name +" d20+" + attacker.attackBonus+": " + (d20+attacker.attackBonus)+ " vs AC " + defender.armorClass + "\n" + attacker.name +" hits! d" + attacker.weaponDamage + ": " + d_wp  + "\n";
        textInfo.scrollTop = textInfo.scrollHeight;
        defender.hitPoints = defender.hitPoints - d_wp;
        defenderInfo.value = defender.stats();
        defenderInfo.append("\n" + "Alive: " + defender.alive);
        }
    else {
        textInfo.value += attacker.name + " misses! d20+" + attacker.attackBonus+": " + (d20+attacker.attackBonus)+ " vs AC " + defender.armorClass;
        textInfo.scrollTop = textInfo.scrollHeight;
        defenderInfo.value = defender.stats();
        defenderInfo.append("\n" + "Alive: " + defender.alive);
   }}


function check_defeat (attacker, defender, attackerInfo, defenderInfo) {
    if (attacker.hitPoints <= 0){
        attacker.hitPoints = 0;
        attacker.alive = false,
        attackerInfo.value = attacker.stats();
        attackerInfo.append("\n" + "Alive: " + attacker.alive);
        textInfo.value += "\n" +defender.name + " killed " + attacker.name + "!";
        textInfo.scrollTop = textInfo.scrollHeight;
     } 
    if (defender.hitPoints <= 0){
        defender.hitPoints = 0;
        defender.alive = false,
        defenderInfo.value = defender.stats();
        defenderInfo.append("\n" + "Alive: " + defender.alive);  
        textInfo.value += "\n" + attacker.name + " killed " + defender.name + "!";
     }
}

function reset (hero, monster) {
    if (hero.alive===false){
        hero.reset();
        hero.alive = true;
        heroInfo.value = hero.stats();
        heroInfo.append("\n" + "Alive: " + hero.alive);  
    }
    if (monster.alive===false){
        monster.reset();
        monster.alive = true;
        monsterInfo.value = monster.stats(); 
        monsterInfo.append("\n" + "Alive: " + monster.alive);  
    }
}  
}
当我调用它时,它只执行第一个函数攻击,而不是第二个

buttonAttack.onclick = function(){
if (current_monster.hitPoints <= 0){current_monster = selectMonster();monsterInfo.value = current_monster.stats() + "\n" + "Alive: " + current_monster.alive;}  
else{battle(Arquer, current_monster);}
};

执行函数时,不必预先编写函数

试一试


执行函数时,不必预先编写函数

试一试

应该行得通-

function two(a,b){
  console.log(a+b);
}

function one(){
 two(1,2);
 two(3,4);  
}

one();
输出:

二,

7

它应该会起作用-

function two(a,b){
  console.log(a+b);
}

function one(){
 two(1,2);
 two(3,4);  
}

one();
输出:

二,

七,

执行第一个函数2

这是极不可能的;你为什么认为它被处决了?在调用任何东西或执行任何东西之前,都会出现语法错误,可能类似于意外标记;,因为语法

function two(a, b);
无效;函数定义的主体必须用大括号括起来。如果您查看控制台,就会看到错误;是吗?它必须是:

function two(a, b) { }
但显然,您只想调用函数,在这种情况下,您应该使用twoa,b的基本函数调用语法。函数用于定义函数,而不是调用它们

执行第一个函数2

这是极不可能的;你为什么认为它被处决了?在调用任何东西或执行任何东西之前,都会出现语法错误,可能类似于意外标记;,因为语法

function two(a, b);
无效;函数定义的主体必须用大括号括起来。如果您查看控制台,就会看到错误;是吗?它必须是:

function two(a, b) { }
但显然,您只想调用函数,在这种情况下,您应该使用twoa,b的基本函数调用语法。函数用于定义函数,而不是调用它们。

最好、最简单的解决方案是将Promist.all与nodejs一起使用

范例

结果

最好且最简单的解决方案是将Promist.all与nodejs一起使用

范例

结果


是的,你是赖特。我在没有签入的情况下写的文章中输入错误,但是在我的代码中,正如你所说,写的是正确的。我编辑了我的帖子,我希望你现在能更清楚地看到这个问题。是的,你是赖特。我在没有签入的情况下写的文章中输入错误,但是在我的代码中,正如你所说,写的是正确的。我编辑了我的帖子,我希望你现在能更清楚地看到这个问题。是的,你是赖特。我在没有签入的情况下写的文章中输入错误,但是在我的代码中,正如你所说,写的是正确的。我编辑了我的帖子,我希望你现在能更清楚地看到这个问题。是的,你是赖特。我在没有签入的情况下写的文章中输入错误,但是在我的代码中,正如你所说,写的是正确的。我编辑了我的帖子,我希望你现在能更清楚地看到这个问题。是的,你是赖特。我在没有签入的情况下写的文章中输入错误,但是在我的代码中,正如你所说,写的是正确的。我编辑了我的帖子,我希望你现在能更清楚地看到这个问题。是的,你是赖特。我在没有签入的情况下写的文章中输入错误,但是在我的代码中,正如你所说,写的是正确的。我编辑了我的帖子,我希望你现在能更清楚地看到这个问题。
['response1','response2']