2010-09-24 14 views
6

मेरे पास जावास्क्रिप्ट परिवर्तनीय ओबीजे है जो डीओएम में एक तत्व का प्रतिनिधित्व करता है और मैं इसकी आईडी बदलना चाहता हूं। मैंने निम्नलिखित द्वारा ऐसा करने का प्रयास किया है, जो यह भी दर्शाता है कि यह काम नहीं करता है!क्या मैं जावास्क्रिप्ट का उपयोग कर एक HTML तत्व की आईडी बदल सकता हूं?

obj.id = "newID"; 

alert(obj.id); // this gives me newID as required 

var element = document.getElementById("newID"); 

if (element != null) { alert("Hooray"); // this alert never gets displayed! } 

ऊपर मेरे कोड के साथ क्या गलत है इसका मतलब है कि आईडी बदल दी जाती है लेकिन डोम में नहीं उठाई जाती है? अग्रिम में बहुत धन्यवाद।

+2

'obj' असाइन कैसे किया जाता है? –

+0

इस ब्राउजर के तहत आपने इस मामले को पुन: पेश किया है? – HoLyVieR

+2

क्या "obj" दस्तावेज़ में जोड़ा गया है? – Alex

उत्तर

3

कोड आपको बताएंगे कि काम करता है; समस्या शायद उस कोड में है जो दिखता है और obj असाइन करता है। मेरा अनुमान है कि यह सिर्फ एक जावास्क्रिप्ट वस्तु है, न कि डीओएम पेड़ का हिस्सा है।

+0

धन्यवाद - कि वास्तव में समस्या थी! – user455141

-2

हाँ आप कर सकते हैं, यहाँ jQuery के साथ एक समाधान है

$("#xxx").attr("id", "yyy"); 

या

getElementById("xxx").setAttribute("id", "yyy"); 
+5

-1 ओपी ने निर्दिष्ट नहीं किया है कि वे jQuery का उपयोग करना चाहते हैं और यह शुद्ध जावास्क्रिप्ट का उपयोग करके प्राप्त किया जाना चाहिए। यह उनके सवाल का जवाब नहीं दे रहा है कि आईडी क्यों बदल दी गई है, लेकिन यह 'getElementById' द्वारा फिर से नहीं मिली है। – GenericTypeTea

+0

जावास्क्रिप्ट बराबर obj.setAttribute है ("आईडी", "yourid") – Tim

+0

@Tim, वास्तव में 'obj.id =" foo ";' सरल बराबर है। – GenericTypeTea

3

कोई कारण यह शुद्ध जावास्क्रिप्ट का उपयोग काम नहीं करना चाहिए है। यहां एक working fiddle है जो इसे दिखाता है। आपको एक jQuery समाधान या किसी अन्य जावास्क्रिप्ट विधि की आवश्यकता नहीं है, id = "foo"; एक डोम ऑब्जेक्ट्स आईडी बदलने का सबसे आसान तरीका है।

मेरे ऊपर बेला पर एक नजर डालें और कोशिश करते हैं और देखते हैं कि क्या आपके कोड और मेरा के बीच का अंतर है।

5

जब से तुम हमें पूरे कोड देना नहीं है मेरा अनुमान है कि आप शायद अपने कोड

obj = document.createElement("div"); 
obj.id = "something"; 

// ... 

obj.id = "newID"; 

alert(obj.id); // this gives me newID as required 

var element = document.getElementById("newID"); 

if (element != null) { alert("Hooray"); // this alert never gets displayed! } 

में इस के समान कुछ है कि विशेष मामले में है, document.getElementById("newID") आप कुछ भी वापस नहीं होगा तत्व के बाद से पृष्ठ में नहीं जोड़ा गया था और इसलिए यह पृष्ठ में नहीं मिला है।

0

इस प्रयास करें:

मुझे

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <title>test</title> 
</head> 
<body bgcolor="#ffffff"> 

    <script type="text/javascript"> 
     function ChangeID(elementId, newId) { 
      var obj = document.getElementById(elementId); 
      obj.id = newId; 
     } 

     function SetContent(elementId, content) { 
      var obj = document.getElementById(elementId); 
      obj.innerHTML = content; 
     } 
    </script> 

    <div id="div1"></div> 

    <a href="#" onclick="ChangeID('div1', 'div6');">ChangeID</a><br /> 
    <a href="#" onclick="SetContent('div6', 'this is the contents');">Set Contents</a> 





</body> 
</html> 
+1

'javascript:' 'hclick' विशेषताओं में उपयोग न करें; यह बेकार है (वास्तव में, आप केवल इस तरह एक जावास्क्रिप्ट लेबल असाइन कर रहे हैं)। –

+0

बस स्पष्ट था। संपादित और हटा दिया है। – jimplode

1

आपका कोड, ठीक लग रहा है, हालांकि अगर आप अपने कोड में उस तरह से टिप्पणी कर रहे हैं, आपको लगता है कि कर सकते हैं ब्रेस बंद कर दिया कभी नहीं है कारण टिप्पणी करने के लिए काम करता है ।

if (element != null) { alert("Hooray"); // this alert never gets displayed! } <-- this brace 
+0

+1 - महान पकड़ो! –

0

विचार करने की एक और बात है। क्या आप डीओएम तैयार होने से पहले ऐसा करने की कोशिश कर रहे हैं? क्या वह तत्व अभी तक लोड हो गया है? यदि आप उस तत्व को बदलने का प्रयास करते हैं जिसमें डीओएम पेड़ में नहीं है तो आप चुपचाप असफल हो जाएंगे।

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

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