0

ちょっとした質問があります。私がやりたいことは、InnerHTML 変数を作成することです。

多分コードはそれをよりよく説明しています、私が今持っているもの:

-----Javascript-----

var VarOne = 'Four';        
var VarTwo = 'Five';
var VarThree = 'Six';


function MyFunction(){
document.getElementById("MyDiv").innerHTML = ['Var' + event.target.id];
     }

---HTML-----

<div id="MyDiv"></div>

var を探す代わりに、非常に論理的に 'VarOne、VarTwo、または VarThree が結果として得られますが、彼が var を使用するようにするにはどうすればよいでしょうか?

4

5 に答える 5

4

ジョナサンの答えは正しいですが、ウィンドウ オブジェクトを変数で汚染しないようにする必要があります。

オブジェクトを使用してこれらの値を格納するようにリファクタリングすることを検討してください。

var values = {one:'four', two:'five', three:'six'};

function MyFunction(){
    document.getElementById("MyDiv").innerHTML = values[event.target.id];
}

これにより、ウィンドウ スコープに変数が 1 つだけ残ります (これは、クロージャーを使用して回避することもできます)。

于 2012-07-23T04:24:12.963 に答える
2

デフォルト スコープの変数は、windowオブジェクト内にあります。あなたはできるはずです:

var id = 'One'
var VarOne = 'Four';
var VarTwo = 'Five';
var VarThree = 'Six';

alert(window["Var" + id]); // => Four

MyFunctionしたがって、関数の内容を次のように変更できるはずです。

document.getElementById("MyDiv").innerHTML = window['Var' + event.target.id];
于 2012-07-23T04:16:44.777 に答える
2

文字列を変数名として直接使用する代わりに、値をハッシュに入れます。

var Vars = { 'One': 'Four', 'Two': 'Five', 'Three': 'Six' };        


function MyFunction(){
  document.getElementById("MyDiv").innerHTML = Vars[event.target.id];
}
于 2012-07-23T04:23:03.507 に答える
1

より安全なバージョンとより良い構造のバージョンには、次のようなものが含まれる場合があります。

var DivContents = {
    VarOne : "Four",
    VarTwo : "Five",
    VarThree : "Six"
};


function MyFunction(){
    document.getElementById("MyDiv").innerHTML = DivContents['Var' + event.target.id];
}
于 2012-07-23T04:21:55.707 に答える
0

さて、私は JavaScript の専門家ではありませんeval()が、あなたがやりたいことをやってくれるでしょうか?

 var results = eval('Var' + number);

または、おそらく配列を作成して、その方法でデータにアクセスすることもできます。

于 2012-07-23T04:18:01.383 に答える