繁体   English   中英

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

[英]ES6 calling method in another class, using 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事件中使用了其他类似的方法,但是都没有参数,现在我被困在这里。 提前致谢。

您现在不希望调用函数,而是可能希望传递函数。 通过它,您可以访问适当的this并将其传递给styleCircle

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

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

另外,由于window.selectundefined this.select可能this.select您带来麻烦。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM