2015-10-22 23 views
1

我的循環工作正常,但jsp中x變量的值不會改變。在我的jsp代碼中發現奇怪的東西,x ++不起作用

function divProductVisible(elem){ 
       var div = document.getElementById('linkHD'); 
       var divProduct = document.getElementById('linkProduct'); 
       div.style.visibility = 'visible'; 
       divProduct.style.visibility = 'hidden'; 
       var linkHD = elem.innerHTML; 
       var x =3; 
       var y; 
       var i; 
       <% int x= 0;%> 
       alert(<%=x%>); 
       for(i = 0; i < x ;i++){ 
        <% dataProduct1 = daftarProduct1[x]; x++;%> 
          alert(<%=x%>); 

       } 
      } 

但是,此代碼工作正常

function divHDVisible(elem){ 
      var div = document.getElementById('linkHD'); 
      var divProduct = document.getElementById('linkProduct'); 
      div.style.visibility = 'visible'; 
      divProduct.style.visibility = 'hidden'; 
      var linkHD = elem.innerHTML; 
      var x =<%=daftarJobs1.length%>; 
      var y; 
      var i; 
      for(i = 0; i < x ;i++){ 
       <% dataJobs1 = daftarJobs1[x]; x++;%> 
       if(linkHD.toString() == <%=dataJobs1.getID_Harware_Use()%>){ 
       <% 
       idTT = dataJobs1.getID_Harware_Use(); 
       %> 
      } 
      } 
      alert(<%=x%>); 
     } 

這兩種方法都在同一頁,輸出是必須相同。

+0

你在這裏看到什麼alert(<%=x%>) – brk

+0

變量x的結束值,有2個變量,一個在java中n另一個爲javascript – Fenny

+0

我看不到第二個塊如何工作(編譯),因爲* server-size *'x'是未定義的。請記住,'<% %>'內的任何內容都會在服務器端執行,而其他所有內容如果執行客戶端(瀏覽器)。 – Andreas

回答

0

我假設這兩個塊在同一個JSP文件中。

到JSP,外<% %>什麼是文本,所以對於實際的執行,它只是認爲:

text 
<% int x= 0;%> 
text<%=x%>text 
text 
<% dataProduct1 = daftarProduct1[x]; x++;%> 
text<%=x%>text 
text 

text 
text<%=daftarJobs1.length%>text 
text 
<% dataJobs1 = daftarJobs1[x]; x++;%> 
text<%=dataJobs1.getID_Harware_Use()%>text 
<% idTT = dataJobs1.getID_Harware_Use(); %> 
text 
text<%=x%>text 
text 

執行,也就是說變成:

text 
text0text 
text 
text1text 
text 

text 
text3text 
text 
text999text 
text 
text2text 
text 

其中999是值爲daftarJobs1[1].getID_Harware_Use()


因此第二個塊無法編譯。第一塊變成:

function divProductVisible(elem){ 
    var div = document.getElementById('linkHD'); 
    var divProduct = document.getElementById('linkProduct'); 
    div.style.visibility = 'visible'; 
    divProduct.style.visibility = 'hidden'; 
    var linkHD = elem.innerHTML; 
    var x =3; 
    var y; 
    var i; 
    alert(0); 
    for(i = 0; i < x ;i++){ 
     alert(1); 
    } 
} 

function divHDVisible(elem){ 
    var div = document.getElementById('linkHD'); 
    var divProduct = document.getElementById('linkProduct'); 
    div.style.visibility = 'visible'; 
    divProduct.style.visibility = 'hidden'; 
    var linkHD = elem.innerHTML; 
    var x =3; 
    var y; 
    var i; 
    for(i = 0; i < x ;i++){ 
     if(linkHD.toString() == 999){ 
     } 
    } 
    alert(2); 
} 

那麼,哪一個做了你所期望的呢?

+0

謝謝嘗試,是的,它不是我想要的,情況是,我想通過單擊鏈接從數據庫獲取數據,n顯示在同一頁面中,而不是鏈接到另一頁面。你能幫我解決這個案子嗎? – Fenny

+0

不是真的,因爲這與這個問題有*無關,但你有兩個選擇:1)用查詢參數重新顯示整個頁面,使服務器包含你想要的信息。 2)使用AJAX向服務器查詢數據並動態更新頁面。 ---這兩個問題都超出了這個問題的範圍,所以不要打擾問。如果需要,創建一個新問題。 – Andreas

+0

謝謝,它已經解決了 – Fenny