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

问题描述 投票:0回答:2

我知道有很多这样的问题,但我一直在寻找几个小时,但找不到任何答案。我有这个方法,它接受一个参数,该参数应该是两个选择的ID。使用此参数,我想确定使用哪个选择并执行if语句,但无济于事。当我运行它时,它在Chrome中的控制台中没有显示任何错误,它什么都不做。任何人都可以对它有所了解,这是一个导出类中的方法:

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;
    }
  }

这是在另一个类中,在两个选择元素上调用,并且该类在文件的顶部导入:

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

ELEMENTS是一个带常量的文件,它只是用来从HTML文件中获取ID。我使用其他方法,使用onclick事件,但没有参数,现在我被困在这里。提前致谢。

javascript html ecmascript-6 es6-modules
2个回答
1
投票

您现在不想调用这些函数,而是希望传递函数。通过它你可以访问正确的this并将其传递给styleCircle

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

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

另外this.select可能会引起麻烦,因为window.selectundefined


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.