それは、その名前の変数の値と同じであるオブジェクトを呼び出すために変数を使用することは可能ですか?

StackOverflow https://stackoverflow.com/questions/1266537

  •  13-09-2019
  •  | 
  •  

質問

のは、私はもともとgetElementByIdをから来た文字列が渡されている機能を持っている、と私はその文字列の値と同じ名前を持つオブジェクトがあるとしましょう、そのオブジェクトを呼び出す方法はありますか?私は要素のIDからその値を取得するまで、私は私が望むどのオブジェクトを知ることができません。

たとえばます:

StartingFunction(SomeID){
someVariable = document.getElementById(SomeID).id
somefuntion(someVariable)
}

someFunction(ElementID){
// need to call Object.Value of whichever object is named the same as the value of   
//ElementID here

}

ELEMENTIDはただの変数ではなくオブジェクトであるため、ElementID.Valueは明らかに動作しません...

役に立ちましたか?

解決

あなたはsomeFunctionに直接要素を渡すことができます。

StartingFunction(SomeID){
  var element = document.getElementById(SomeID);
  somefuntion(element);
}

someFunction(element){
  alert(element.id);
  alert(element.value);
  // Any other processing you want to do with element
}

それとも、単にgetElementByIdを使用し、IDから要素を取得できるようにする必要がある場合は、

someFunction(id) {
  var element = document.getElementById(id);
  alert(element.value);
  // Any other processing you need to do with the element DOM object
}

他のヒント

あなたはsomefunctionへのdocument.getElementById()を渡しているので、

あなたがELEMENTIDを呼び出すと、実際の要素そのものです。

関数がグローバルスコープにある場合は、

あなただけのwindow[ElementID]することができます 例えばます:

   someFunction(ElementID){
        return window[ElementID].value;

    }

それをしないでください。これは悪いデザインで、莫大な痛みと道を見つけにくいバグにつながるます。

その代わり、あなたが参照するすべてのオブジェクトを持つグローバルオブジェクトを使用します。

var valueMap = new Object();

function setValue(id, valueObject) {
    valueMap[id] = valueObject;
}

function someFunction(id) {
    return valueMap[id].Value;
}

これは意味をなさないます:

someVariable = document.getElementById(SomeID).id

あなたはidを持つ要素のidを取得しているSomeID ...ちょうどSomeIDを使用しない理由は?

あなたがID SomeIDを持つオブジェクトのvalue属性をしたい場合は、単に行います:

document.getElementById(SomeID).value
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top