我知道有很多这样的问题,但是我已经搜索了几个小时,找不到任何答案。我有这个方法,它带有一个参数,应该是两个选择的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事件中使用了其他类似的方法,但是都没有参数,现在我被困在这里。预先感谢。
答案 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.select
是undefined
。
答案 1 :(得分:0)
第一步是尝试调试,并确保select
等于这些常量之一。确保调试中具有完整的分支范围。那意味着从在该else
语句中添加一个if/else if
语句开始-您的选择可能不等于任何一个常量,因此两个分支都不运行。