我正在尝试做的是当我用来确定该元素宽度的变量超过某个值时,给另一个div。当值超过70时,如何将类添加到适当的元素?如您所见,属于该变量的元素与ID具有相同的名称。
这是我的代码:
//serverload bars
var serverload1 = 73;
var serverload2 = 13;
var serverload3 = 68;
var serverload4 = 33;
var serverload5 = 83;
var serverload6 = 63;
var serverload7 = 93;
var serverload8 = 23;
$('#serverload1').width(serverload1+"%");
$('#serverload2').width(serverload2+"%");
$('#serverload3').width(serverload3+"%");
$('#serverload4').width(serverload4+"%");
$('#serverload5').width(serverload5+"%");
$('#serverload6').width(serverload6+"%");
$('#serverload7').width(serverload7+"%");
$('#serverload8').width(serverload8+"%");
var barcolors = [serverload1, serverload2, serverload3, serverload4, serverload5, serverload6, serverload7, serverload8].forEach(testwidth);
function testwidth(element, index, array) {
if (element > 70) {
console.log(element);
}
}
答案 0 :(得分:3)
我建议您按以下方式重构代码:
var barcolors = [73, 13, 68, 33, 83, 63, 93, 23];
$("[id^=serverload]").filter(function() {
var i = this.id.substring(10),
width = barcolors[i-1];
if (width !== undefined)
this.style.width = width + "%";
return width > 70;
}).addClass("someClass");
答案 1 :(得分:2)
试试这个......
function testwidth(element, index, array) {
if (element > 70) {
$('#' + element).addClass('mynewclass');
}
}
答案 2 :(得分:1)
根据您的综合回复,我能够找到以下解决方案:
var barcolors = [["serverload1",serverload1], ["serverload2",serverload2], ["serverload3",serverload3], ["serverload4",serverload4], ["serverload5",serverload5], ["serverload6",serverload6], ["serverload7",serverload7], ["serverload8",serverload8]].forEach(testwidth);
function testwidth(element, index, array) {
if (element[1] > 70) {
console.log(element[0]);
var tegroot = "#"+element[0];
console.log(tegroot);
$(tegroot).addClass("redbar");
}
}
答案 3 :(得分:1)
基于VisioN的解决方案,但更通用:
var barcolors = [73, 13, 68, 33, 83, 63, 93, 23];
$(".bar").filter(function(i) {
var width = barcolors[i];
this.style.width = width ? width + "%" : 0;
return width > 70;
}).addClass("someClass");
注意:最后一个条形码9仅用于测试代码安全性。
答案 4 :(得分:0)
jQuery
.addClass()
用于添加课程。
答案 5 :(得分:0)
试试这个,
if(serverload1>70){
$('#serverload1').addClass('NEW CLASS NAME');
}
答案 6 :(得分:0)
更多的评论而不是答案,但是:
您是否考虑过将载入值放在html元素的数据属性中?
<div id="serverload1" class="serverload" data-load="73"></div>
<div id="serverload2" class="serverload" data-load="13"></div>
js会更小,更具可读性:
$('div.serverload').filter(function() {
var $this = $(this),
load = $this.data('load');
$this.width(load + '%');
return load > 70;
}).addClass('customClass');