简单的比较条件在JavaScript函数中不起作用

时间:2015-04-19 01:33:59

标签: javascript

我在HTML

中的输入隐藏元素中存储了一些值
<input type="hidden" class="w_e_t_t_c_d" value="1659" />
<input type="hidden" class="w_e_t_t_c_d" value="1569" />
<input type="hidden" class="w_e_t_t_c_d" value="1699" />
<input type="hidden" class="w_e_t_t_c_d" value="500" />

<div id="max_num"></div>

然后我试图通过这个JavaScript函数访问最大值

function decre_incoming_troops()
{
    //Selecting all elements of class w_e_t_t_c_d
    var incoming_troops = $('input:hidden.w_e_t_t_c_d');
    var lastReach = 0;
    for(var i = 0; i < incoming_troops.length; i++)
    {
        if(incoming_troops[i].value > lastReach)
        {
            lastReach = incoming_troops[i].value;
        }
        document.getElementById("max_num").innerHTML = lastReach;
    }
}

decre_incoming_troops();

但出乎意料的是,这个功能没有给出最大价值。 我对它进行了详细的调试,并对此if(incoming_troops[i].value > lastReach)比较条件返回错误结果进行了罚款。
我不知道代码中是否有任何错误或逻辑错误。
这是FIDDLE中的示例
或者您可以在下面的代码段中查看相同内容

&#13;
&#13;
function decre_incoming_troops()
{
    //Selecting all elements of class w_e_t_t_c_d
	var incoming_troops = $('input:hidden.w_e_t_t_c_d');
	var lastReach = 0;
	for(var i = 0; i < incoming_troops.length; i++)
	{
        if(incoming_troops[i].value > lastReach)
        {
            lastReach = incoming_troops[i].value;
        }
        document.getElementById("max_num").innerHTML = lastReach;
	}
}

decre_incoming_troops();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<input type="hidden" class="w_e_t_t_c_d" value="1659" />
<input type="hidden" class="w_e_t_t_c_d" value="1569" />
<input type="hidden" class="w_e_t_t_c_d" value="1699" />
<input type="hidden" class="w_e_t_t_c_d" value="500" />

<div id="max_num"></div>
&#13;
&#13;
&#13;

提前谢谢。

2 个答案:

答案 0 :(得分:3)

您正在对字符串值执行字典比较。相反,您应该转换为整数:

parseInt(incoming_troops[i].value, 10)

我为你修理了小提琴:

https://jsfiddle.net/ub5pw6r8/2/

var lastReach = 0;
for (var i = 0; i < incoming_troops.length; i++) {
    var x = parseInt(incoming_troops[i].value, 10);  // Base-10 conversion.
    if (x > lastReach) {
        lastReach = x;                               // Current maximum.
    }
}  // When the loop is done, we have the overall maximum. Now display it.
document.getElementById("max_num").innerHTML = lastReach;

答案 1 :(得分:0)

您从标签获得的值是一个字符串。你需要它是一个数字。

if(new Number(incoming_troops [i] .value)&gt; lastReach)

parseInt()如上所述也有效。

如果您找到了更大的数字,也只需要设置DOM元素 current = new Number(incoming_troops [i] .value)

if(current > lastReach) { lastReach = current; document.getElementById("max_num").innerHTML = lastReach; }