javascript:在另一个函数中获取函数的变量值

时间:2012-08-05 03:49:28

标签: javascript function variables call

好的,所以我在体内有这个代码:

<input type="text" value="haha" id="full_name"/>

脚本中的代码

<script language="javascript" type="text/javascript">
    function first(){
        var nameContent=document.getElementById('full_name').value;
    }

    function second() {
        first();
        y=nameContent; 
        alert(y);
    }
    second();
</script>

我想要一个显示元素full_name值的警报,但它似乎不起作用,有人知道为什么吗? :S

5 个答案:

答案 0 :(得分:17)

nameContent仅存在于first()函数中,正如您在first()函数中定义的那样。

为了扩大其范围,请在函数之外定义它:

var nameContent;

function first(){
    nameContent=document.getElementById('full_name').value;
}

function second() {
    first();
    y=nameContent; alert(y);
}
second();

稍微更好的方法是return该值,因为全局变量很快就会变得混乱:

function getFullName() {
  return document.getElementById('full_name').value;
}

function doStuff() {
  var name = getFullName();

  alert(name);
}

doStuff();

答案 1 :(得分:4)

您的nameContent范围仅在第一个函数内。你永远不会以这种方式获得它的价值。

var nameContent; // now it's global!
function first(){
    nameContent = document.getElementById('full_name').value;
}

function second() {
    first(); 
    y=nameContent; 
    alert(y);
}
second();

答案 2 :(得分:1)

你需要在第一个函数中使用return语句。

function first(){
    var nameContent = document.getElementById('full_name').value;
    return nameContent;
}

然后在你的第二个函数中可以是:

function second(){
    alert(first());
}

答案 3 :(得分:1)

您的nameContent变量位于函数范围内,并且在该函数外部不可见,因此如果您想在函数外部使用nameContent,请在{{1}内声明它global使用<script>关键字标记并使用内部函数,如下所示

var

答案 4 :(得分:0)

在ES5中实现此目标的OOP方法是使用this关键字将该变量变成属性。

function first(){
    this.nameContent=document.getElementById('full_name').value;
}

function second() {
    y=new first();
    alert(y.nameContent);
}