2011-09-27 65 views
0

如何從另一個函數獲取var值?如何從javascript中的函數外部獲取值?

jQuery的

$(document).ready(function() { 
    function GetBiggestValue() { 
     var value = 0; 
     $('#tagCloud li a').each(function() { 
      if (value < $(this).attr('value')) { 
       value = $(this).attr('value'); 
      } 
     }); 
     var FullValue = value; 
    } 

    function Abc(){ 
     console.log(FullValue); 
    } 

    Abc(); 
}); 

HTML:

<ul id="tagCloud"> 
    <li><a href="#" value="1">Val 1</a></li> 
    <li><a href="#" value="2">Val 2</a></li> 
    <li><a href="#" value="3">Val 3</a></li> 
    <li><a href="#" value="4">Val 4</a></li> 
</ul> 

回答

3

您不能從其他上下文不是你自己或父上下文的一個訪問變量。 FullValue變量對GetBiggestValue()函數是私有的,因爲您使用var語句來定義變量。在你的情況下,正確的程序將從GetBiggestValue()函數返回value(儘管可能會使用GetBiggestValue()以外的變量來存儲該值的另一​​個解決方案)。

$(document).ready(function() { 
    function GetBiggestValue() { 
     var value = 0; 
     $('#tagCloud li a').each(function() { 
      if (value < $(this).attr('value')) { 
       value = $(this).attr('value'); 
      } 
     }); 
     return value; 
    } 

    function Abc(){ 
     console.log(GetBiggestValue()); 
    } 
    Abc(); 
}); 
0

剛從GetBiggestValue函數返回值:

function GetBiggestValue() { 
    var value = 0; 
    $('#tagCloud li a').each(function() { 
     if (value < $(this).attr('value')) { 
      value = $(this).attr('value'); 
     } 
    }); 
    return value; 
} 

function Abc(){ 
    console.log(GetBiggestValue()); 
} 
-1

聲明之外的功能

var value = 0; 
$(document).ready(function() { 
function GetBiggestValue() { 
     value = 0; 
     $('#tagCloud li a').each(function() { 
      if (value < $(this).attr('value')) { 
       value = $(this).attr('value'); 
      } 
     }); 

    } 
    function Abc(){ 
     console.log(value); 
    } 
    Abc(); 
}); 

或返回值

+1

對不起......這是行不通的,因爲'FullValue'仍然是'GetBiggestValue()'上下文的私有。 –

+0

正確的做法,錯誤的實施。修復後我會撤銷downvote。 :) –

+0

以上代碼decalres價值作爲全球。如果你想讓FullValue可訪問,將聲明移到jQuery代碼之外 – hungryMind

1

可能是你想要的任何地方使用這個值。所以調用GetBiggestValue()函數併爲其分配一個變量。

function GetBiggestValue() { 
    var value = 0; 
    $('#tagCloud li a').each(function() { 
     if (value < $(this).attr('value')) { 
      value = $(this).attr('value'); 
     } 
    }); 
    return value; 
} 

var FullValue = GetBiggestValue(); 

function Abc(){ 
    console.log(FullValue); 
} 
相關問題