Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6使用模块在另一个类中调用方法_Javascript_Html_Ecmascript 6_Es6 Modules - Fatal编程技术网

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

Javascript ES6使用模块在另一个类中调用方法,javascript,html,ecmascript-6,es6-modules,Javascript,Html,Ecmascript 6,Es6 Modules,我知道有很多这样的问题被问到,但我已经搜索了几个小时,找不到任何答案。我有这个方法,它接受一个参数,它应该是两个select的ID。使用这个参数,我想确定使用哪个select并执行if语句,但没有效果。当我运行它时,它在Chrome的控制台中没有显示任何错误,并且什么也不做。任何人都可以解释一下,这是一个导出类中的方法: static styleCircle(select) { if(this.select === ELEMENTS.ELEMENT_COLOR_SELECT) {

我知道有很多这样的问题被问到,但我已经搜索了几个小时,找不到任何答案。我有这个方法,它接受一个参数,它应该是两个select的ID。使用这个参数,我想确定使用哪个select并执行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;
    }
  }
在另一个类中,在两个select元素上调用该类,并在文件顶部导入该类:

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

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

第一步是尝试调试并确保
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);
};

< <代码> >此。选择可能会引起您的麻烦,如<代码>窗口。选择<代码> >代码>未定义< /代码>。

您应该考虑使用旧的“on *”属性。您正在检查<代码>。在第一个IF中选择< /COD>,您可能是指<代码>选择< /代码>。我尝试使用AdvestListNever,还是一样的问题。是的,我错了,请选择。@LeonGrubisic关于您上次编辑的内容,请阅读:我在其中添加了一个else,并登录控制台,当我重新加载页面时,它会立即打印出来,在不选择select元素的情况下。啊,它看起来还需要用于这些onChange事件:
ELEMENTS.element\u COLOR\u select.onChange=Script.styleCircle.bind(this);ELEMENTS.ELEMENT\u BORDER\u SELECT.onchange=Script.styleCircle.bind(这个)我删除了这个。从中选择并添加了一个else with console日志。我试过你的代码行,当我从下拉列表中选择它时,它会转到else部分并打印出来,它不会比较。谢谢。现在可以了。如果你靠近我,我会给你买一杯啤酒。@leon很乐意帮忙:)(不用担心,我冰箱里有足够的啤酒;)