比较元素值并将属性分配给较大的
Compare element values and assign attribute to larger
我一直在绞尽脑汁想办法解决这个问题。。。
我有这个HTML:
<div id="aa1">23</div>
<div id="a2">14</div>
<div id="b1">67</div>
<div id="bb2">21</div>
我试图做的是成对比较这些元素的值。最简单的解决方案是:
var a1 = parseFloat($("#aa1").text()).toFixed(2);
var a2 = parseFloat($("#a2").text()).toFixed(2);
var b1 = parseFloat($("#b1").text()).toFixed(2);
var b2 = parseFloat($("#bb2").text()).toFixed(2);
if (a1 > a2){
$('#aa1').css('color','#fff');
}else{
$('#a2').css('color','#fff');
}
if (b1 > b2){
$('#b1').css('color','#fff');
}else{
$('#bb2').css('color','#fff');
}
假设div ID的长度不相同,将包含数字,并且将有多个对,尽管配对总是相同的(总是a1/a2、b1/b2等),但最好的方法是什么?我尝试了几种不同的解决方案(substring、regex、Math.max),但每种解决方案都遇到了不同的障碍。
编辑:
约翰使我走上了正确的方向。我最终使用的js是:
//Grabbing initial values. Yes, these could be assigned in the next section.
var a1 = parseFloat($("#aa1").text()).toFixed(2);
var a2 = parseFloat($("#a2").text()).toFixed(2);
var b1 = parseFloat($("#b1").text()).toFixed(2);
var b2 = parseFloat($("#bb2").text()).toFixed(2);
//Setting up the pairs. Note the additional - character to enable the ability to split correctly.
var arr1 = ['aa1-'+a1, 'a2-'+a2];
var arr2 = ['b1-'+b1, 'bb2-'+b2];
//Creating the two-demensional array
var mainarr = [arr1, arr2];
//Loop through each pair in the array
for (var i=0; i < mainarr.length; i++){
//Split off the values I want
var first = mainarr[i][0].split('-')[1], second = mainarr[i][1].split('-')[1];
//Split off the html IDs I want
var firstCss = '#'+mainarr[i][0].split('-')[0], secondCss = '.'+mainarr[i][1].split('-')[0];
//compare pairs and assign the correct attribute to the element.
((first > second) ? $(firstCss) : $(secondCss)).css('background-color','#DBFFDB');
}
仍然需要首先设置对,但这比一百万个if/else语句要好得多。
你能一次循环两个元素吗:
function value($div) {
return parseFloat($div.text()).toFixed(2);
}
var $divs = $('div'); // Use whatever selector gets all the desired elements
for (var i = 0; i < $divs.length; i += 2) {
var $div1 = $divs[i], $div2 = $divs[i + 1];
((value($div1) > value($div2)) ? $div1 : $div2).css('color','#fff');
}
相关文章:
- 是否可以使用CSS分配数据属性
- Javascript从函数分配属性
- 比较元素值并将属性分配给较大的
- 为什么 Jasmine 在我设置 selectedIndex 时抱怨“试图分配给只读属性”
- 将文本值匹配/分配给属性
- 使用 JQuery 从另一个元素的 id 为图像分配属性
- 为什么typeof(null)返回“;对象”;,但是你可以't为其分配属性
- 如何在对象构造期间使用异步生成的值分配属性
- 分配属性值在猫鼬中不起作用
- 在不为原型分配属性的情况下扩展Javascript对象
- 为元素分配属性的自定义指令
- 如何在React中动态分配属性
- 在javascript中分配属性引用
- 动态地为对象分配属性名
- 正在分配属性'由getElementById()在语句中返回的HTML元素对象的s
- Javascript逻辑运算符&&用于分配属性
- 按索引分配属性的最佳方法是什么?
- 在Internet Explorer中动态地为输入字段分配属性
- 如何创建带有未分配属性的Javascript构造函数/原型
- 无法在 Internet Explorer 中为 window.event(或数据属性)分配属性