我知道有很多这样的问题,但我一直在寻找几个小时,但找不到任何答案。我有这个方法,它接受一个参数,该参数应该是两个选择的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);
};
另外this.select
可能会引起麻烦,因为window.select
是undefined
。
第一步是尝试调试并确保select
等效于这些常量中的任何一个。确保在调试中具有完整的分支覆盖率。这意味着首先在else
语句中添加一个if/else if
语句 - 你的select可能不等于任何一个常量,因此不会运行任何分支。