2013-07-01 67 views
0

我試圖讓這段代碼在while循環而不是if中工作。 如果printLoad_#val爲空,我需要num_#的每個瞬間不顯示。因此,如果printLoad_1值=無,Num_1將不會顯示,然後printLoad_2將檢查其num_2是否爲空,以此類推。 我遇到的問題是在檢查每個部分之前停止功能。 林不知道如果一個工作,將會工作。JavaScript if語句要做 - 而

$(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

是你的問題「我如何使用while循環」或是「我的代碼有什麼問題」? – Hamish

+0

其中有一點,對不起 – user2089255

+0

好吧,你有什麼錯誤嗎? – Hamish

回答

4

你有沒有考慮過只是合成字符串而不是這種冗長的結構?事情是這樣的:

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

這實際上適用於輸入,但我無法動態地使其工作。我會用你給我的東西,並試圖提出另一個建立這個問題的問題。謝謝! – user2089255

+0

@ user2089255如果通過動態表示可變數量的輸入,然後查看我的答案。 – HMR

1

,如果您有打印負載的變化量和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); 
} 
+0

好吧,這個也適用,我和其他工作腳本有同樣的問題。我認爲我的代碼位置不正確。我會移動東西,看看。 – user2089255

2

假設你正在使用jQuery和你的元素是爲了,我會忘了ID的。如果使用普通類,說.printload.num,那麼你可以很容易地通過像指數目標元素:

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

我看到我能用這個做什麼,謝謝! – user2089255

+0

@ user2089255注意printLoad和num是元素的類。 – HMR

+0

是的。當使用jQuery時,只要你看到id =「* _#」類型的構造,你幾乎總是可以用類來代替(或除了)id之外的類。 –

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 
    } 
} 
+0

我明天試試,謝謝! – user2089255

0

每@elclanr的回答是:

使用公共類,並通過索引定位元素,它會簡單得多。

設置你的「打印負載」元素class='printLoad'和你的「編號」元素class='num'。然後...

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