将函数结果设置为外部javascript文件上同一函数内的变量

时间:2018-08-26 07:09:23

标签: javascript html

以下内容没有将函数的结果带入变量和html页面中……为什么?

外部JAVASCRIPT

function damageRoll(min, max) {
  'use strict';

  document.getElementById("combatResult").innerHTML = damageFinal;

  min = min || peacemaker.damageMin;
  max = max || peacemaker.damageMax;

  var damageFinal = damageRoll();

  return Math.floor(Math.random() * (max - min + 1) ) + min;}

HTML

<div id="combatResult"></div>

<button onclick="damageRoll()">Fight</button>

编辑 仔细阅读每个人的答案,但最小/最大可能不是问题。我无法显示它们从另一个外部js文件中获取了它们的值,并且在我的代码的其他区域中按预期方式工作。谢谢。

外部JAVASCRIPT#2

var peacemaker = {
damageMin: 3,
damageMax: 5,

};

4 个答案:

答案 0 :(得分:0)

  1. 您的int numberOfFriends = sc.nextInt(); int forbidden = sc.nextInt(); int binaryOptions = sc.nextInt(); String[] friendsOrder = new String[numberOfFriends]; System.out.println(numberOfFriends); System.out.println(forbidden); System.out.println(binaryOptions); for(int j=0;j<numberOfFriends;j++) { sc.nextLine(); friendsOrder[i] = sc.nextLine(); } for(int j=0;j<numberOfFriends;j++) { System.out.println(friendsOrder[j]); } 调用实际上并不包含必需的参数damageRoll()min。调用时必须添加项目,例如:

max

,并且在函数本身内:

<button onclick="damageRoll(min, max)">Fight</button>
  1. 您要递归地调用该函数,而不需要一个基数。不会发生任何事情,因为该函数将永远无法完成调用。您可能需要调查一下。

答案 1 :(得分:0)

您似乎是个初学者,所以我将向您解释我的所作所为,而不仅仅是发布正确的答案。

首先,您应该将函数拆分为处理click事件的函数,然后将其计算为结果。最好第二个函数只使用内部变量(不要使用函数外部的变量)

因此您的代码应如下所示:

// example values for object
        const peacemaker = {
            damageMin: 100,
            damageMax: 100
        }

        function damageRollEvent(e) {
            'use strict';
            e.preventDefault();

            var _peacemaker = {
                min: min || peacemaker.damageMin,
                max: max || peacemaker.damageMax
            }

            var damageFinal = damageRoll(_peacemaker);
            document.getElementById("combatResult").innerHTML = damageFinal;
        }

        function damageRoll(_peacemaker) {
            'use strict';
            return Math.floor(Math.random() * (_peacemaker.max - _peacemaker.min + 1)) + _peacemaker.min;
        }

damageRollEvent函数处理事件并与html混淆。

damageRoll返回您期望并进行纯编程工作的值。

html

<div id="combatResult"></div>

    <button onclick="damageRollEvent($event)">Fight</button>

我没有测试代码,但是应该可以。

答案 2 :(得分:0)

您可能想要这样的东西。

function damageRoll(min, max) {
  'use strict';

  min = min || peacemaker.damageMin;
  max = max || peacemaker.damageMax;

  var damageFinal = Math.floor(Math.random() * (max - min + 1) ) + min;
  document.getElementById("combatResult").innerHTML = damageFinal;
}

首先,最小和最大修改应放在函数的前面。您还应该考虑将damageFinal变量声明放在上面的示例中的函数前面。不要过度使用JavaScript的变量提升功能。

接下来,您的原始代码会导致无休止的自我调用。我不明白您的意图,但是最好不要在您遇到的情况下使用自我调用。

PS:您可以使用es6使代码更简单

function damageRoll(min = peacemaker.damageMin, max = peacemaker.damageMax) {

  var damageFinal = Math.floor(Math.random() * (max - min + 1) ) + min;
  document.getElementById("combatResult").innerHTML = damageFinal;


}

答案 3 :(得分:0)

这是无需递归调用函数即可进行的方式,应在中间添加一个辅助函数。您将通过HTML调用帮助程序。无论如何,您必须找到一种方法来解决2个变量(最小和最大)。看到这个..

    function damageRoll(min, max) {

      var damageFinal = Math.floor(Math.random() * (max - min + 1) ) + min;

      document.getElementById("combatResult").innerHTML = damageFinal;

    }

    function throwMinMax(){

       // You should Find a way to resolve the two variables below
       // we have No idea where the peacemaker stuff come from

      var min = peacemaker.damageMin;
      var max = peacemaker.damageMax;

      damageRoll(min,max);

   }