2012-06-08 36 views
1
$("#div").click(function(){ 
$('#myselect').change(function() { 
    var names = []; 
    $('.checkbox input').each(function() { 
      if(this.value != ''){ 
       names.push(this.value); 
       } 
      }); 
    console.log(names); 
    }); 
}); 

我需要使用該函數外部的names才能在另一個函數上使用它。誰能告訴我該怎麼做?如何獲得函數外的數組?

$("#dropdown").change(function(){ 
    console.log(names); 
}); 

names是一個數組。

+0

你的其他功能是什麼?你試圖達到什麼目的? –

+0

而你不能將數組移動到外部範圍的原因是......?通過將它們放入同一個準備好的處理程序中來讓它們共享相同的作用域,並且應該在就緒處理程序的頂部聲明該數組。 – gdoron

+0

您將更改事件附加到click事件中,這意味着您首先必須單擊#div元素,然後更改#myselect控件中用於填充數組的值。這真的是你想要的,因爲你在變化事件中做的事情不取決於#div元素或#myselect控制嗎? – Guffa

回答

1

你的意思是這樣的:

請讓我知道如果我錯過了什麼。

否則希望這有助於

代碼

var names = []; // Move the name array to outer scope 

$("#div").click(function(){ 

    $('#myselect').change(function() { 

     $('.checkbox input').each(function() { 
      if(this.value != ''){ 
       names.push(this.value); 
      } 
     }); 
     console.log(names); 
    }); 

    alert(names); 
}); 
+0

我嘗試了一個,但它不適合我...順便說一句,謝謝你的迴應! – vnpnlz

+0

不用擔心布魯夫,嗯它應該whorl,你可以輕彈你我的HTML我會讓你**演示**? :) –

+0

我剛剛編輯我的代碼上面...我想在其他事件上使用該var名稱 – vnpnlz

3

定義 「名稱」 之外的功能...

var names = []; 

    $('#myselect').change(function() { 

     $('.checkbox input').each(function() { 
       if(this.value != ''){ 
        names.push(this.value); 
        } 
       }); 
     console.log(names); 
     }); 
2

你應該從變化 - 調用其它功能事件處理器。定義數組之外的數組沒有任何意義,它必然會發生該事件。

function gotNewNames(names) { 
    // do something every time the value changes 
} 

$("#div").click(function(){ 
    $('#myselect').change(function() { 
     var names = []; 
     $('.checkbox input').each(function() { 
      if(this.value != ''){ 
       names.push(this.value); 
      } 
     }); 
     gotNewNames(names); 
    }); 
}); 

如果您只需要能夠在其他地方獲取當前值,則應該在更高的範圍內聲明該變量,例如,在點擊處理程序中:

$("#div").click(function(){ 
    var names; 
    $('#myselect').change(function() { 
     names = []; // don't forget to reset before filling 
     $('.checkbox input').each(function() { 
      if(this.value != ''){ 
       names.push(this.value); 
      } 
     }); 
    }); 
    $("#dropdown").change(function(){ 
     console.log(names); 
    }); 
}); 
+0

+1看起來像最簡單的解決方案往往被遺忘(談論功能參數)。 –