2011-09-27 115 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); 
} 
相关问题