2011-04-21 70 views
0

我已經在javascript中編寫了兩個單獨的函數,並且我創建了一個全局變量。 第一個函數是設置全局變量的值,第二個函數是使用該全局變量來檢查條件,但它不起作用。在JavaScript中維護變量的難度

這是我的代碼。

var flag = 1; 

function setSelection(){ 

    for (index=0; index < top.parent.frmRadio.view.length; index++) { 
     if (top.parent.frmRadio.view[index].checked) { 
      var radioValue = top.parent.frmRadio.view[index].value; 

      if(radioValue == "graph"){ 
       flag = 1; 
       top.parent.test2.innerHTML = flag; 
      } 
      else{ 
       flag = 0; 
       top.parent.test2.innerHTML = flag; 

      } 

     } 
    } 
} 


function setFileName(name){ 
    var fileName = name; 
// document.getElementById("body").innerHTML = fileName; 
    document.getElementById("body").innerHTML = flag; 
    if(flag == 1){ 
     top.parent.frame2.location = fileName; 
     document.getElementById("body").innerHTML = fileName; 
    } 
    else{ 
     top.parent.frame2.location = "simpletree.html"; 
     document.getElementById("body").innerHTML = "simpletree.html"; 
    } 


// parent.frame2.location = fileName; 
} 

這兩個函數都是由不同的地方調用的。單擊單選按鈕時調用第一個方法,單擊列表時調用第二個方法。

+2

*「但它不會工作」*不會工作***如何***?你期望什麼結果?你會得到什麼結果?您是否在JavaScript控制檯中看到任何錯誤?用調試器瀏覽時看到了什麼? – 2011-04-21 05:04:23

回答

0

你的全局變量很好(全局變量很好,強烈建議避免它們)。

我認爲問題出在setFileName函數中,那裏有一些非常奇怪的操作。一些評論:

function setFileName(name){ 
    var fileName = name; 
// document.getElementById("body").innerHTML = fileName; 
    document.getElementById("body").innerHTML = flag; 
// ^-- Do you *really* have an element on the page with the id="body"? 
//  This will not change the `body` element of the page (unless you've given it that id). 
    if(flag == 1){ 
     top.parent.frame2.location = fileName; 
     document.getElementById("body").innerHTML = fileName; 
//  ^--- This will replace the content of the element with id="body" with 
//   the text of the filename (it will not retrieve the file) 
    } 
    else{ 
     top.parent.frame2.location = "simpletree.html"; 
     document.getElementById("body").innerHTML = "simpletree.html"; 
//  ^--- This will replace the contents of the element with id="body" 
//   with the text "simpletree.html", it will not retrieve the file 
    } 


// parent.frame2.location = fileName; 
} 

設置元素的innerHTML改變其內容所指派的實際文本。它不會加載頁面並將頁面的內容放在那裏。爲此,您必須使用iframe或使用ajax加載頁面內容(來自同一來源的服務器),然後分配生成的文本/標記。

+0

我正在使用這個「innerHTML」來檢查它是否得到正確的輸入 – Ashish 2011-04-21 05:12:54

+0

@Ashish:還有其他幾點?特別是,你真的有'id'「body」元素嗎? – 2011-04-21 05:23:29

+0

@ T.J.擁擠是的,我有,但那只是爲了測試目的,當它會正常工作,那麼我會刪除它。 – Ashish 2011-04-21 05:29:52