另一个 class 中的 ES6 调用方法,使用模块

ES6 calling method in another class, using modules

我知道有很多这样的问题,但我已经搜索了几个小时,找不到任何答案。我有这个方法,它接受一个参数,它应该是两个select的ID。利用这个参数,我想判断使用的是哪个select,然后执行if语句,但是没有用。当我 运行 它时,它在 Chrome 的控制台中没有显示任何错误并且它什么也不做。任何人都可以阐明它,这是一次导出中的方法 class:

static styleCircle(select) {
    if(this.select === ELEMENTS.ELEMENT_COLOR_SELECT) {
      var getColor = ELEMENTS.ELEMENT_COLOR_SELECT;
      var colorValue = getColor.options[getColor.selectedIndex].value;
      ELEMENTS.ELEMENT_STYLE_CIRCLE.style.backgroundColor = colorValue;
    } else if(select == ELEMENTS.ELEMENT_BORDER_SELECT) {
      var getRadius = ELEMENTS.ELEMENT_BORDER_SELECT;
      var radiusValue = getRadius.options[getRadius.selectedIndex].value;
      ELEMENTS.ELEMENT_STYLE_CIRCLE.style.borderRadius = radiusValue;
    }
  }

这是在另一个 class 的两个 select 元素中调用的,并且 class 在文件顶部导入:

ELEMENTS.ELEMENT_COLOR_SELECT.onchange = Script.styleCircle(this);
ELEMENTS.ELEMENT_BORDER_SELECT.onchange = Script.styleCircle(this);

ELEMENTS 是一个包含常量的文件,这些常量仅用于从 HTML 文件中获取 ID。我使用了类似这样的其他方法,带有 onclick 事件,但是 none 有参数,现在我被困在这里。提前致谢。

第一步是尝试调试并确保 select 等同于这些常量中的任何一个。确保在调试中有完整的分支覆盖。这意味着首先要向该 if/else if 语句添加 else 语句 - 您的 select 可能不等于任何一个常量,因此两个分支都不是 运行.

您现在不想调用函数,但您可能想传递函数。通过它,您可以访问正确的 this 并将其传递给 styleCircle:

ELEMENTS.ELEMENT_COLOR_SELECT.onchange = function() {
   Script.styleCircle(this);
};

ELEMENTS.ELEMENT_BORDER_SELECT.onchange =  function() {
  Script.styleCircle(this);
};

此外 this.select 可能会给您带来麻烦,因为 window.selectundefined