javascript if声明要做什么

时间:2013-07-01 23:43:18

标签: javascript do-while

我试图让这段代码在while循环中工作而不是if。 如果printLoad_#val为空,我需要显示num_#的每个瞬间。因此,如果printLoad_1 value = nothing,则不会显示Num_1,然后printLoad_2将检查其num_2是否为空,依此类推。 我遇到的问题是在检查每个部分之前函数停止。 我不确定do-while是否有用。

$(document).ready(function() {
    if(document.getElementById("printLoad_1").value == "")
    {
        document.getElementById('num_1').style.display = 'none';
    }
    if(document.getElementById("printLoad_2").value == "")
    {
        document.getElementById('num_2').style.display = 'none';
    }
    if(document.getElementById("printLoad_3").value == "")
    {
        document.getElementById('num_3').style.display = 'none';
    }
    if(document.getElementById("printLoad_4").value == "")
    {
        document.getElementById('num_4').style.display = 'none';
    }
    if(document.getElementById("printLoad_5").value == "")
    {
        document.getElementById('num_5').style.display = 'none';
    }
});

5 个答案:

答案 0 :(得分:4)

您是否考虑过只合成字符串而不是这种冗长的结构?像这样:

for( var i=1; i<=5; i++ ) {
  if( document.getElementById('printLoad_'+i).value === '' ) {
      document.getElementById('num_'+i).style.display = 'none';
  }
}

答案 1 :(得分:2)

假设你正在使用jQuery并且你的元素是有序的,我会忘记ID。如果您使用公共类,例如.printload.num,那么您可以轻松地按索引定位元素,如:

$('.printload').each(function(i){
  if (!this.value) $('.num').eq(i).hide();
});

答案 2 :(得分:1)

如果你有一个可变数量的printLoad和num:

var i = 1,
pl=document.getElementById('printLoad_'+i),
num = document.getElementById('num_'+i);
while(pl !== null && num !== null){
  if(pl.value === ""){
    num.style.display = 'none';
  }
  i++;
  pl=document.getElementById('printLoad_'+i),
  num = document.getElementById('num_'+i);
}

答案 3 :(得分:1)

这是对Ethan的回答的轻微修改,“动态地工作”。我还更新了它以使用jQuery。如果使用 CSS类层次结构关系,这可以更清晰地处理,但这会影响生成DOM的方式。

for (var i = 1; /* break */; i++) {
    var printEl = $('#printLoad_' + i)
    if (printEl.length) {
        if (!printEl.val()) {
            $('#num_' + i).css({display: 'none'})
        }
    } else {
        // No #printLoad_N, guess we're done looking
        break
    }
}

答案 4 :(得分:0)

Per @elclanr的回答:

  

使用通用类,并通过索引定位元素,它会更简单。

将“printLoad”元素设置为class='printLoad',将“num”元素设置为class='num'。然后...

for (i=0;i<document.getElementByClass('printLoad').length;i++)
{
    if (document.getElementByClass('printLoad')[i].value == "")
    {
        document.getElementByClass('num')[i].style.display='none';
    }
}