onresize不'在循环中似乎不起作用(javascript)
onresize doesn't seem to work when in a loop (javascript)
我正试图根据循环中的屏幕大小来调用一个函数。
加载页面时,该函数运行良好,但调整窗口大小时,内容不会更改。
以下是一个示例:https://jsfiddle.net/celine305/BaNRq/27/
任何帮助都将不胜感激。
for (var i = 0; i < 2; i++) {
function red() {
$('#' + i + '').css('background', '#B60C0C')
.text('Screen Size RED');
}
function orange() {
$('#' + i + '').css('background', '#EBAE10')
.text('Screen Size ORANGE');
}
function green() {
$('#' + i + '').css('background', '#83ba2b')
.text('Screen Size GREEN');
}
var widths = [0, 500, 850];
function resizeFn() {
if (window.innerWidth >= widths[0] && window.innerWidth < widths[1]) {
red();
} else if (window.innerWidth >= widths[1] && window.innerWidth < widths[2]) {
orange();
} else {
green();
}
}
resizeFn();
window.onresize = resizeFn();
}
- 将函数移出
for
循环 - 将3个函数合并为一个
- 使用jQuery监听器而不是JavaScript,因为您已经在使用jQuery了
// You could also assign classes and use $(".className") instead of loop
function changeColor(color) {
for(var i=0; i<2; i++){
$('#'+i+'').css('background',color).text('Screen Size' + color);
}
}
var widths = [0, 500, 850];
function resizeFn() {
if (window.innerWidth>=widths[0] &&window.innerWidth<widths[1]) {
changeColor('#B60C0C');
} else if (window.innerWidth>=widths[1] && window.innerWidth<widths[2]) {
changeColor('#EBAE10');
} else {
changeColor('#83ba2b');
}
}
resizeFn();
$(window).resize(function() {
console.log("resize");
resizeFn();
})
JSFiddle在div
中呈现内容,因此您的代码从未检测到大小调整。我添加了一个容器来检测大小调整,但除此之外,您应该使用$(window)
Fiddle:https://jsfiddle.net/BaNRq/29/
循环的重点似乎是选择元素。通过使用一个查询选择所有元素,您可以更简单地做到这一点:
$("#1, #2")
因为你在循环中做所有的事情,你正在重新定义函数,并多次分配resize函数。
哦,顺便说一句,您并不是真正将函数分配给window.onresize事件处理程序,而是函数的返回值。尝试在不使用大括号的情况下分配它。
如果要使用当前代码,可能需要将函数声明移到for循环之外。请参阅本文。
不过,作为一个附带说明,我建议不要使用javascript来处理这些样式更改。CSS以媒体查询的形式提供了一种很好的方式来处理预定大小的样式更改。
相关文章:
- 为什么这个 .push 不起作用?(JavaScript)
- document.createelement不起作用(javascript)
- Chrome 中表格的 CSV 导出不起作用 - JavaScript/AngularJS
- 如果语句不起作用 - JavaScript
- 为什么我的动态更改链接不起作用?(Javascript)
- RPS 函数不起作用(JavaScript)
- 计时器间隔不起作用 Javascript
- 通过返回 false - 不起作用(javascript)来阻止链接打开
- Eval 不起作用 - JavaScript
- Android 浏览器 .click() 不起作用 javascript
- 为什么这段代码不起作用?Javascript
- jsFiddle显示正确,但一旦在本地运行就不起作用(Javascript)
- 带有html的Navigator不起作用javascript
- 从文本文件中提取内容不起作用 JavaScript
- 从查询字符串中获取参数;不起作用..Javascript
- regex手机验证不起作用-javascript
- if和else语句不起作用(javascript)(html)
- 更改字体大小的复选框不起作用-Javascript
- 为什么这个基本的 if 语句不起作用?JavaScript
- Timer 不起作用/ JavaScript/ innerHTML null