我想从if循环中获取if()中的当前值。
前: -
$('.name').each(function () {
//name = this;
temp = parseInt($('#slide_here').next().val());
//console.log(temp)
if (($(this).hasClass("1") == true)) {
//console.log("you in1")
//console.log(temp);
if (temp > 10 && temp <= 20) {
temp = temp + 10;
//console.log(temp);
//Agriculture.push(10);
} else {
temp = temp + 5;
//console.log(temp);
//Agriculture.push(5);
}
//return temp;
console.log(temp);
}
if (($(this).hasClass("2") == true)) {
console.log("you in2")
if (temp > 10 && temp <= 20) {
console.log(temp);
temp = temp + 10;
//Industry.push(10);
} else {
temp = temp + 5;
//Industry.push(5);
}
//return temp;
}
在迭代if循环时,应将值添加到temp中。我想在执行all if语句后将最终值作为总加法。 示例
最初温度= 13 在第一个if循环中 温度= 23 我希望这个23值用于下一个if语句。我尝试了但是我只获得了13个值。
答案 0 :(得分:0)
将您的作业移到外部以获取全局变量。在您的代码中,当值大于20时,它不会输入if语句。为了进入第二个if,我已更新条件以查看全局变量与上次更新保持相同的值;
var temp = parseInt($('#slide_here').next().val());
$('.name').each(function () {
//name = this;
//console.log(temp)
if (($(this).hasClass("1") == true)) {
//console.log("you in1")
//console.log(temp);
if (temp > 10 && temp <= 20) {
temp = temp + 10;
//console.log(temp);
//Agriculture.push(10);
} else {
temp = temp + 5;
//console.log(temp);
//Agriculture.push(5);
}
//return temp;
console.log(temp);
}
if (($(this).hasClass("2") == true)) {
console.log("you in2")
if (temp > 10 && temp <= 20) {
console.log(temp);
temp = temp + 10;
//Industry.push(10);
} else {
temp = temp + 5;
//Industry.push(5);
}
//return temp;
}
您可以在此处查看演示: jsfiddle
答案 1 :(得分:0)
这似乎是正确的。我看到的唯一问题是你检查temp是否小于21,但它现在是23,所以它不会进入最后一个if。添加一些警报以进行调试。这对我来说很好:
$('.name').each(function ()
{
//name = this;
temp = 13;
alert("begins with" + temp);
//console.log(temp)
if (($(this).hasClass("1") == true))
{
//console.log("you in1")
//console.log(temp);
if (temp > 10 && temp <= 20)
{
temp = temp + 10;
alert("temp modified to: " + temp);
//console.log(temp);
//Agriculture.push(10);
}
else
{
temp = temp + 5;
//console.log(temp);
//Agriculture.push(5);
}
//return temp;
console.log(temp);
alert("in first if: " + temp);
}
if (($(this).hasClass("2") == true))
{
console.log("you in2")
if (temp > 10 && temp <= 20)
{
console.log(temp);
alert("current value should match the previous alert: " + temp);
temp = temp + 10;
//Industry.push(10);
}
else
{
temp = temp + 5;
//Industry.push(5);
}
alert("in second if: " + temp);
//return temp;
}
});
</script>
答案 2 :(得分:0)
if
语句不是循环 - 它们执行一次(取决于条件是否为真)并且没有迭代。
代码中的循环实际上是对此行中jQuery each
的调用:
$('.name').each(function () {
如果希望在循环中更新temp
的值而不为具有类name
的每个元素重置,则可能需要将temp
变量的声明移到外部循环:
var temp = parseInt($('#slide_here').next().val());
$('.name').each(function () {
if (($(this).hasClass("1") == true)) {
// ... do logic and update temp
}
if (($(this).hasClass("2") == true)) {
// ... do logic and update temp
}
}
// use final temp value