另一个 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.select
是 undefined
。
我知道有很多这样的问题,但我已经搜索了几个小时,找不到任何答案。我有这个方法,它接受一个参数,它应该是两个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.select
是 undefined
。