18

わかりましたので、本文にこのコードがあります:

<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

4

5 に答える 5

20

nameContentfirst()関数内で定義したように、関数内にのみ存在し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();
于 2012-08-05T03:52:39.817 に答える
4

nameContent スコープは最初の関数内のみです。その価値は決して得られません。

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

function second() {
    first(); 
    y=nameContent; 
    alert(y);
}
second();
于 2012-08-05T03:53:05.550 に答える
1

最初の関数に return ステートメントが必要です。

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

そして、2番目の関数で次のことができます:

function second(){
    alert(first());
}
于 2012-08-05T03:53:58.433 に答える
1

変数nameContentは関数スコープ内にあり、その関数の外では見えないため、関数の外側を使用する場合は、タグ内でnameContent宣言し、次のようにキーワードなしで関数内を使用しますglobal<script>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>
于 2012-08-05T03:54:58.563 に答える
0

ES5 でこれを行う OOP の方法は、 this キーワードを使用してその変数をプロパティにすることです。

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

function second() {
    y=new first();
    alert(y.nameContent);
}
于 2019-10-22T19:43:42.380 に答える