gpt4 book ai didi

javascript - onresize 在循环中似乎不起作用(javascript)

转载 作者:行者123 更新时间:2023-12-03 06:29:17 25 4
gpt4 key购买 nike

我正在尝试在循环内调用基于屏幕尺寸的函数。

当页面加载时,该函数工作正常,但是,当调整窗口大小时,内容不会改变。

这是一个例子: 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();
}

最佳答案

  1. 将函数移出 for 循环
  2. 将 3 个函数合并为一个
  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/

关于javascript - onresize 在循环中似乎不起作用(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38511813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com