簡體   English   中英

javascript:在另一個函數中獲取函數的變量值

[英]javascript: get a function's variable's value within another function

好的,所以我體內有以下代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM