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

时间:2019-02-20 21:34:20

标签: javascript html ecmascript-6 es6-modules

我知道有很多这样的问题,但是我已经搜索了几个小时,找不到任何答案。我有这个方法,它带有一个参数,应该是两个选择的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事件中使用了其他类似的方法,但是都没有参数,现在我被困在这里。预先感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

第一步是尝试调试,并确保select等于这些常量之一。确保调试中具有完整的分支范围。那意味着从在该else语句中添加一个if/else if语句开始-您的选择可能不等于任何一个常量,因此两个分支都不运行。