0

onLoad関数でオブジェクトを作成し、onChange関数内でそのオブジェクトを参照しようとすると、オブジェクトは「未定義」になります...どのように参照しますか?

HTML:

<body onLoad="loaded()">
    <select onChange="updateObject(event)">
        <option value="v1">--v1--</option>        
        <option value="v2">--v2--</option>
    </select>
</body>

JS:

function loaded(){             
    var obj = new ObjectExample();
}
function updateObject(event){
    console.log(obj);
}
4

2 に答える 2

2

ここで扱っているのは可変スコープです。オブジェクト'obj'は、それが宣言されている場所である'loaded'関数内にのみ存在します。この問題をすばやく簡単に解決する方法は、変数のスコープを大きくすることです。たとえば、グローバルスコープ。

var obj;

function loaded(){                  
    obj = new ObjectExample(); 
} 
function updateObject(event){     
    console.log(obj); 
}

'obj'変数が'window'オブジェクトに存在するようになりました(ブラウザコンソールツールでwindow.objと入力してみてください!)。

お役に立てば幸いです。

于 2012-08-02T02:19:10.233 に答える
1
var obj;

function loaded(){             
    obj = new ObjectExample();
}
function updateObject(event){
    console.log(obj);
}
于 2012-08-02T02:18:18.550 に答える