javascript - 使用参数对象将用户生成的值作为参数传递给函数时遇到问题

标签 javascript object arguments

使用文本框,我需要用户能够输入他们想要查找平均值的数字,每个数字之间用空格分隔。

这是文本框的 HTML:

<input type="text" id="average" onchange="findAverage()" />

我知道我需要使用参数对象来获取平均值。

从这里开始,我就迷失了方向。看起来也许我应该首先将文本框输入转换为数组,并按“”分割?我非常迷失,非常感谢对此的任何帮助!到目前为止我得到的功能如下:

function findAverage(nums) {
  nums = document.getElementById("average").value;
  nums = nums.split(" ");

  for (var i=0, total = 0, len=arguments.length; i<len; i++) {
    total += arguments[i]; 
  } 
  document.getElementById("averageReturn").innerHTML = total / arguments.length;   
}

我一直在阅读有关使用参数对象的所有内容,但我真的不理解它。

(如果有人能想到更好的方法来问这个问题,请随时编辑这个问题,以便其他用户更好/更清楚地了解它!)

最佳答案

您的解决方案并不遥远,但使用 onchange HTML 属性却让您的生活变得困难。 arguments 局部变量和 nums 参数与您的情况没有任何相关性。

我会使用 addEventListener 方法。这既更容易阅读,也使得在输入值发生更改时获取输入值变得微不足道。像这样的东西(Plunker):

function findAverage() {
  // grab the value, split on whitespace, parse into numbers
  var nums = this.value.split(' ').map(parseFloat);

  // compute total
  for (var i = 0, total = 0, len = nums.length; i < len; i++) {
    total += nums[i];
  }

  // compute average and write to output element
  document.getElementById("averageReturn").innerHTML = total / len;
}

// add change listener
document
  .getElementById('average')
  .addEventListener('change', findAverage, false);

请注意,当使用 addEventListener 绑定(bind) findAverage 时,在函数内部,this 引用目标元素,而 this. value 保存该元素的当前值。

关于javascript - 使用参数对象将用户生成的值作为参数传递给函数时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35352587/

相关文章:

java - 如何连接两个命令行参数?

C++ 指向函数的指针作为参数。数据类型不兼容

javascript - 如何选择第 n 行文本 (CSS/JS)

javascript - 在数组中查找对象?

javascript - x 秒或页面更改后再次隐藏警告消息

javascript - 在 Svelte 中是否有可能让 #each 循环与嵌套对象值的双向绑定(bind)?

javascript - 对象返回自己的属性并保留方法

c++ - 作为参数传递给 C++ 中的类时的内存丢失

javascript - jQuery <tag> 按不同选项排序

javascript - 访问同一对象中的对象属性