2010-11-19 85 views
0

我要傳遞的字符串值,這是我從textarea的進入對焦()和模糊(), 但爲什麼我會得到的是[對象對象]?參數傳遞:傳遞字符串值到功能

我得到的每一個textarea的字符串值,成功地與每一個()和我字符串存儲在一個變種 - var value_default = $this.val();

然後,我通過這個var$this.focus(function (value_default) {..}) - 我會傳遞錯誤的?

如果我提醒這個value_default我會[對象oject] - 警報(value_default);

下面是整個代碼,如果你需要看到它...

$(".autohide").each(function(){ 

    /* set the variable and store its value */ 
    var $this = $(this); 

    var value_default = $this.val(); 

    var parent_autohide = $this.parents('form'); 

    var parent_button = $('input[type=submit]',parent_autohide).parents("div:.item-form").hide(); 


    var parent_marginbottom = parseInt($this.parents("div:.item-form").css("marginBottom")); 

    $this.parents("div:.item-form").css({margin:'0px'}); 

    alert(value_default); // I will get the string value of each textarea element 

    $this.focus(function (value_default) { 

     alert(value_default); // I will get [object object] 

     var $this = $(this); 

     $this.elastic(); 

     $this.parents('div:.item-form').css({margin:'0px 0px '+parent_marginbottom+'px 0px'}); 

     var $this_parent = $this.parents('form'); 

     var $this_button = $('input[type=submit]',$this_parent).parents("div:.item-form").show(); 


    }).blur(function(value_default){ 

     alert(value_default); // I will get [object object] 

     var $this = $(this); 

     var value_current = $this.val(); 

     if (value_current == value_default) 
     { 
      $this.css({ height: 'inherit'}); 

      $this.parents('div:.item-form').css({margin:'0px'}); 

      var $this_parent = $this.parents('form'); 

      var $this_button = $('input[type=submit]',$this_parent).parents("div:.item-form").hide(); 

     } 
    }); 

}); 

千恩萬謝。

編輯:

我知道什麼是對IE造成錯誤 -

$this.css({height: 'inherit'}); // this line will create error on IE 

$this.css({height:''}); // IE likes this 

所以什麼是錯的「繼承」,IE瀏覽器不會把它像其他瀏覽器?

+0

在這種情況下'$ this.focus(函數(value_default){..})'你實際上並沒有經過'value_default'的功能。您正在定義一個函數,其中'value_default'是第一個參數(在這種情況下,將是焦點事件發送的事件對象) – climbage 2010-11-19 16:24:17

回答

1

作爲評論者說,在創建功能處理該聚焦並且模糊具有被定義爲value_default第一參數(事件參數),其覆蓋聲明越往上之一。

因此,它應該工作,如果你只是做:

.focus(function(){.blur(function(){

因此,你應該能夠訪問你之前聲明value_default,因爲它仍然是範圍之內,而不是由你的函數的參數被覆蓋。

+0

是的,它適用於所有瀏覽器上的接受IE7 .... – laukok 2010-11-19 16:31:06

+0

什麼是您的警報顯示現在在IE7中? – 2010-11-19 16:40:01

+0

這對我來說似乎有風險。所有模糊/焦點事件上的'value_default'值將最終成爲最後一個值(我認爲)。 http://jsfiddle.net/CcdWt/ - 點擊所有三個div,你會得到「test3」的值(糾正我,如果我把它設置錯了) – climbage 2010-11-19 16:41:38