javascript if语句在执行while时
我试图让这段代码在while循环中而不是if中工作。 如果printLoad_35;val为空,我需要不显示num_35;的每个瞬间。因此,如果printLoad_1 value=nothing,Num_1将不显示,然后printLoad_2将检查其Num_2是否为空,依此类推。 我遇到的问题是函数在检查每个部分之前停止。 我不确定一段时间是否有效javascript if语句在执行while时,javascript,do-while,Javascript,Do While,我试图让这段代码在while循环中而不是if中工作。 如果printLoad_35;val为空,我需要不显示num_35;的每个瞬间。因此,如果printLoad_1 value=nothing,Num_1将不显示,然后printLoad_2将检查其Num_2是否为空,依此类推。 我遇到的问题是函数在检查每个部分之前停止。 我不确定一段时间是否有效 $(document).ready(function() { if(document.getElementById("printLoad_1
$(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';
}
});
您是否考虑过只合成字符串而不是这种冗长的构造?大概是这样的:
for( var i=1; i<=5; i++ ) {
if( document.getElementById('printLoad_'+i).value === '' ) {
document.getElementById('num_'+i).style.display = 'none';
}
}
for(var i=1;i如果您的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);
}
假设您使用的是jQuery,并且您的元素是有序的,我会忘记ID。如果您使用公共类,例如.printload
和.num
,那么您可以通过如下索引轻松地将元素作为目标:
$('.printload').each(function(i){
if (!this.value) $('.num').eq(i).hide();
});
下面是对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
}
}
根据@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';
}
}
for(i=0;iIs)您的问题是“如何使用while循环”还是“我的代码有什么问题?”?两者兼而有之,抱歉,你有什么错误吗?诊断:似乎是iditis的一个例子。使用普通类,并通过索引将元素作为目标,这会简单得多。iditis?更像是缺乏经验。无论如何,谢谢……这实际上对输入有效,但我很难让它动态工作。我将使用你给我的东西并尝试一下在此基础上提出另一个问题。谢谢!@user2089255如果动态指的是可变数量的输入,请看我的答案。@user2089255请注意printLoad和num是元素的类。是的。使用jQuery时,只要您看到id=“*\u89255”类型构造,您几乎总是可以使用类而不是(或除了)id来更好地执行此操作。这也很有效,与我在其他工作脚本中遇到的问题相同。我想我的代码放在了错误的位置。我将四处移动并查看。我明天再试,非常感谢!