هل من الممكن استخدام متغير لاستدعاء كائن اسم هو نفسه قيمة المتغيرات؟

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

  •  13-09-2019
  •  | 
  •  

سؤال

دعنا نقول أن لدي وظيفة يتم تمريرها بالسلسلة التي جاءت أصلا من getelementbyid، ولدي كائن بنفس اسم قيمة تلك السلسلة، هل هناك طريقة لاستدعاء هذا الكائن؟ لن أعرف أي كائن أريده حتى أحصل على هذه القيمة من معرف العنصر.

على سبيل المثال:

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.Value لن يعمل منذ أن كان ElementID مجرد متغير وليس كائن ...

هل كانت مفيدة؟

المحلول

يمكنك تمرير العنصر مباشرة إلى وظيفي.

علي سبيل المثال:

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

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

نصائح أخرى

ما تسمونه في الواقع هو في الواقع العنصر نفسه لأنك تمر Document.geteLementByid () في وظيفي.

إذا كانت الوظيفة في النطاق العالمي يمكنك فقط 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

أنت تقوم بإحضار معرف العنصر مع معرف Votid ... لماذا لا تستخدم فقط؟

إذا كنت تريد سمة القيمة للكائن مع معرف Votid، ففعل فقط:

document.getElementById(SomeID).value
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top