2012-03-28 17 views
11

पर बनाया गया है, मैंने आंतरिक HTML टैग का उपयोग करके रनटाइम पर एक ऑब्जेक्ट बनाया है, अब मैं getElementById का उपयोग कर इस तत्व को एक्सेस करना चाहता हूं, जब मैंने तत्व को अपनी वापसी पूर्ण मूल्य तक पहुंचाया। कृपया मुझे किसी भी दिशा सुझाव है ताकि मैं इस प्राप्त कर सकते हैं,getElementById जहां एलिमेंट को गतिशील रूप से रनटाइम

यहाँ निम्नलिखित कोड संकेत जो मैं

उपयोग कर रहा हूँ HTML में

<div id="web"> 
<object id="test"></object> 
</div> 

जे एस

में
document.getElementById("web").innerHTML="<object id='test2'></object>"; 
. 
. 
var obj = document.getElementById("test2"); 

यहाँ obj है शून्य मूल्य वापस करें।

+3

कुछ कोड स्निपेट उपयोगी होंगे। – Sirko

+0

jsFiddle.net –

+0

का उपयोग करें [यहां] से कोड का उपयोग करने की कोशिश करो [1] [1]: http://stackoverflow.com/questions/343145/does-getelementbyid-work-on-elements -क्रिएटेड-बाय-जावास्क्रिप्ट – Elena

उत्तर

12

क्या आपने ताजा बनाए गए तत्व को आईडी निर्दिष्ट की है? क्या आपने दस्तावेज़ पेड़ में तत्व डाला था (appendChild या insertBefore का उपयोग करके)? जब तक डीओएम में तत्व डाला नहीं जाता है, तब तक आप document.getElementById का उपयोग करके इसे पुनर्प्राप्त नहीं कर सकते हैं। (से पहले अपने अपने html पृष्ठ के तल पर स्थित स्क्रिप्ट है सही समापन </body> टैग: तत्व सृष्टि के

उदाहरण:

var myDiv = document.createElement('div'); 
myDiv.id = 'myDiv'; 
document.body.appendChild(myDiv); 
document.getElementById('myDiv').innerHTML = 'this should have worked...'; 

[संपादित] बाद में आपूर्ति कोड को देखते हुए, एक तिहाई सवाल उभर)? यदि यह दस्तावेज़ के शीर्षलेख में है, तो आपकी स्क्रिप्टिंग से पहले हो सकती है, दस्तावेज़ पेड़ पूरी तरह से प्रस्तुत किया जाता है। यदि आपकी स्क्रिप्ट दस्तावेज़ के शीर्षक में हो गया है, तो आप दस्तावेज़ के प्रतिपादन के बाद यह को चलाने के लिए एक लोड हैंडलर इस्तेमाल कर सकते हैं:

window.onload = function(){ 
    document.getElementById("web").innerHTML='<object id="test2"></object>'; 
    // [...] 
    var obj = document.getElementById('test2'); 
}; 
1

जावास्क्रिप्ट का उपयोग एक तत्व जोड़ने के लिए आपको 2 बातें करने की ज़रूरत है ।

  1. तत्व

    वर तत्व = document.createElement (टैगनाम) बनाएं;

  2. डोम

    document.body.insertBefore (चयनकर्ता, तत्व) को जोड़ें;

या

यहाँ
document.getElementByID(selector).appendChild(element); 

और जानकारी: MDN

-2

तो एक डोम नोड डायनामिक रूप से तैयार किया जाता है, तो कोई जरूरत कभी document.getElementById() के साथ फिर से यह पता लगाने के लिए है।

सही तरीके से नोड बनाकर, आप इसे जावास्क्रिप्ट चर के रूप में संदर्भित कर सकते हैं, जिसका उपयोग कहीं भी दायरे के भीतर किया जा सकता है।

उदाहरण के लिए:

window.onload = function(){ 
    var myDiv = document.createElement('div'); 
    document.body.appendChild(myDiv); 

    //and now a function that's called in response to some future event 
    function whatever(){ 
     ... 
     myDiv.style.color = 'red'; 
     ... 
    } 
}; 

नोट: भीतरी समारोह (कुछ बिंदु (रों) भविष्य में कहा जाता है), क्योंकि बाहरी समारोह एक "बंद" है, जो भीतर चर रखा जाता है रूपों myDiv चर की पहुंच है जीवित और सुलभ, भले ही बाहरी कार्य पूरा हो गया हो और लौटा हो।

+0

हे @ बीटरूट-बीटरूट, ... मुझे लगता है कि यदि कोई नया बनाया गया तत्व बनाया गया है तो हम एक समस्या होगी लेकिन हम संदर्भ चर नहीं जानते हैं। GetElementById() को वैसे भी कैसे प्राप्त करें? किसी भी 3-rd पार्टी इंजेक्शन या कुछ .... – gumuruh

+0

यह सवाल का जवाब नहीं देता है। अपने कोड बेस के बारे में कुछ भी नहीं मानना ​​बेहतर है। वह तत्व निर्माण कोड आधार के हिस्से में हो सकता है जो तत्व को पकड़ने वाले भाग के लिए पहुंच योग्य नहीं है। यहां तक ​​कि यदि यह सुलभ है, तो कृपया उन प्रश्नों पर विचार करें जो इस प्रश्न पर आते हैं, इस सवाल के जवाब की तलाश में, इस विशिष्ट व्यक्ति के लिए काम करने वाले कामकाज का जवाब नहीं। – Variadicism

संबंधित मुद्दे