我试图让这段代码在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';
}
});
答案 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';
}
}