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

javascript: get a function's variable's value within another function

本文关键字:函数 另一个 变量 获取 javascript      更新时间:2023-09-26

好吧,所以我在正文中有这个代码:

<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

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();

您的nameContent作用域仅在第一个函数内。这样你永远不会得到它的价值。

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

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

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

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

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

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

<script language="javascript" type="text/javascript">
    var nameContent; // In the global scope
    function first(){
        nameContent=document.getElementById('full_name').value;
    }
    function second() {
        first();
        y=nameContent; 
        alert(y);
    }
    second();
</script>

在ES5中实现这一点的OOP方法是使用this关键字将该变量变成一个属性。

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