2009-03-23 18 views
7

यह सभी इस कर रही है लगता है (कोड पदों आदि में।) ... लेकिन मैं 'न जानते हैं कि कैसे :(मैं जावास्क्रिप्ट का उपयोग कर runat = "server" एएसपी तत्व कैसे प्राप्त कर सकता हूं?

जब भी मैं जावास्क्रिप्ट का उपयोग कर एक एएसपी तत्व हेरफेर करने की कोशिश मैं एक "तत्व रिक्त है" या " दस्तावेज़ अपरिभाषित है "आदि त्रुटि .....

जावास्क्रिप्ट ठीक आमतौर पर काम करता है, ... लेकिन केवल जब मैं runat = जोड़ने" सर्वर "विशेषता तत्व करता है मेरी जावास्क्रिप्ट के लिए अदृश्य लग रहे हैं।

किसी भी सुझावों की सराहना की जाएगी

धन्यवाद, एंड्रयू

उत्तर

23

शायद यह हो रहा है कि आपका तत्व/नियंत्रण एक या अधिक एएसपी.NET नियंत्रणों में है जो नामकरण कंटेनर (मास्टर पेज, आईटीम्प्लेट, विज़ार्ड इत्यादि) के रूप में कार्य करता है, और इससे इसकी आईडी बदलती है।

आप अपने ब्राउज़र में "स्रोत देखें" का उपयोग कर सकते हैं यह पुष्टि करने के लिए कि एचटीएमएल में क्या हो रहा है।

यदि आपकी जावास्क्रिप्ट एएसपीएक्स पृष्ठ में है, तो अस्थायी रूप से काम करने का सबसे आसान तरीका use the element's ClientID property है। उदाहरण के लिए, यदि आप एक नियंत्रण नामित TextBox1 कि आप जे एस के माध्यम से संदर्भित करने के लिए करना चाहता था था:

var textbox = document.getElementById('<%= TextBox1.ClientID %>'); 
+1

महान जवाब ... लेकिन यह व्यक्ति जो पहले दिए ... स्पष्टीकरण हालांकि के लिए धन्यवाद करने के लिए देने के लिए था! – Andrew

+3

@ एंड्रयू - यदि यह बेहतर उत्तर है, तो आपको इसे स्वीकार करना चाहिए। एसओ गुणवत्ता पर गति से पहले आता है। –

+0

या यही वह है जो मैं वास्तव में सोच रहा था ... करूँगा। – Andrew

2

आप एक पाठ बॉक्स है, तो:

<asp:TextBox id="txtText" runat="server" /> 

आप का उपयोग कर सकते हैं:

var textBox=document.getElementById('<%=txtText.ClientID %>'); 

किसी भी Webcontrol ही ClientID संपत्ति उजागर करता है।

2

एक तत्व runat="server" बनाना उस तत्व क्या ASP.NET कंटेनर इसके अंदर है नामकरण के आधार पर की क्लाइंट साइड आईडी बदल जाता है। इसलिए यदि आप तत्व को कुशल बनाने के लिए document.getElementById का उपयोग कर रहे हैं, तो आपको इसे .NET द्वारा जेनरेट की गई नई आईडी पास करनी होगी। ClientId संपत्ति में देखो कि उत्पन्न ID प्राप्त करने के लिए ... तुम इतनी तरह अपने जावास्क्रिप्ट में इनलाइन इसका इस्तेमाल कर सकते हैं:

var element = document.getElementById('<%=myControl.ClientID%>'); 
1

सभी हालांकि सवाल का जवाब दे दिया गया है, मैं तो बस कुछ आगे की जानकारी के बाद होगा सोचा ...

रिक स्ट्राल ने इस समस्या के आसपास काफी अंतरंग काम प्रदान किया।

http://www.west-wind.com/WebLog/posts/252178.aspx

शुक्र है जब एएसपी .NET 4.0 आता है, तो यह आपको exacly क्या ग्राहक आईडी किया जाएगा निर्दिष्ट करने के लिए अनुमति देगा!

http://www.codeproject.com/KB/aspnet/ASP_NET4_0ClientIDFeature.aspx

+0

+1: रिक के अच्छे समाधान और .NET 4 नई सुविधा के लिए। यह बाहरी फ़ाइल में जेएस रखने के साथ समस्या हल करता है (जहां '<% = txtText.ClientID%> ') जैसे कुछ का उपयोग नहीं किया जा सकता है। –

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

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