2014-01-06 47 views
0

我有一個javascript問題,我很困惑它。我似乎無法弄清楚爲什麼一個函數返回一個數組(它是一個數組),但另一個函數返回undefined。父窗口說變量是未定義的,但子窗口具有值

問題:爲什麼一個函數返回一個數組,但其他在父窗口返回undefined?

因此,與一些背景我有一個數據發送回父窗口一個javascript孩子。現在它只發送整數,所以沒有太大或有問題。信息保存在父窗口中。子窗口唯一做的就是發回信息。 (基本上說「哦這是被選中的」)。

子窗口

else{ 
      if(document.getElementById("embroid"+embroideryID).checked == false){ 
        parent.EmbroideryDataReturned("add", embroideryID); 
        document.getElementById("embroid"+embroideryID).checked = true; 
      } 
      else{ 
        parent.EmbroideryDataReturned("remove", embroideryID); 
        document.getElementById("embroid"+embroideryID).checked = false; 
      } 
    } 

function SelectedEmbroideries(){ 
    var embroideries = parent.EmbroideryDataReturned("get", 0); 

    for(i = 0; i < embroideries.length; i++){ 
      document.getElementById("embroid"+embroideries[i]).checked = true; 
    } 
} 

父窗口

var embroidArray = new Array(); 
function EmbroideryDataReturned(mode, embroidID){ 
    if(mode == 'add'){ 
      embroidArray.push(embroidID); 
      //alert(mode + " " + embroidID + " Array is now: \n"+ embroidArray); 
      return; 
    } 
    else if(mode == 'remove'){ 
      embroidArray.splice(embroidArray.indexOf(embroidID), 1); 
      //alert(mode + " " + embroidID + " Array is now: \n"+ embroidArray); 
      return; 
    } 
    else if(mode = 'get'){ 
      return embroidArray; 
    } 
} 

父窗口中,在警報,正確地顯示陣列。但是,當它運行更新時,該函數表示該值未定義。什麼導致這個問題?

+1

它應該是'parent.window.EmbroideryDataReturned' – adeneo

+1

此函數中的最後一個'if'語句有一個'='它應該(可能)具有'=='或'==='。 – Pointy

+0

@adeneo讚賞,但它並沒有真正做任何事情。雖然我明白你爲什麼這麼說=)。尖刻,謝謝!我錯過了。 – Twister1002

回答

0

我想通了,還有當時正在穿過的名稱相同的變量我試圖用一個參數。所以我的錯誤!感謝您的幫助!