كيفية الحصول على قيمة معرف العميل لعنصر تحكم ASP.NET عبر جافا سكريبت في ملف JS؟


كيفية الحصول على قيمة معرف العميل لعنصر تحكم asp.net عبر JavaScript في ملف JS في صفحة المحتوى ويتم إحالة ملف JS من نفس الصفحة.
أنا أعمل في إطار صافي 3.5. أقوم بجلب قيمة معرف العميل على النحو التالي
document.getElementById(‘<%=txtDDAExpiryDate.ClientID%>‘).value;. أنا أقل من الاستثناء
خطأ في الكتابة لم يتم اكتشافه: لا يمكن قراءة خصائص القيمة الخالية (قراءة “القيمة”)

ما حاولت:

الكود على النحو التالي

document.getElementById('<%=txtDDAExpiryDate.ClientID%>').value;

الحل 1

ابدأ دائمًا بقراءة الوثائق: المستند: طريقة getElementById() – واجهات برمجة تطبيقات الويب | MDN[^] – من الواضح جدًا أنه يُرجع ملف null عندما لا يكون العنصر الذي يحمل هذا المعرف موجودًا:

يقتبس:

كائن عنصر يصف كائن عنصر DOM المطابق للمعرف المحدد، أو فارغًا إذا لم يتم العثور على عنصر مطابق في المستند.

والآن عليك أن تعرف ما هو بالضبط – txtDDAExpiryDate.ClientID يعود من الخادم، ثم حاول مطابقة ذلك يدويًا مع HTML الخاص بك.
سيخبرك ذلك بمكان المشكلة: جانب الخادم أو جانب العميل.
وعندما تعرف ذلك، يجب أن تكون قادرًا على حله.

استخدم مصحح الأخطاء (أو اكتبه فقط على الصفحة) لمعرفة ذلك.

عذرًا، ولكن لا يمكننا القيام بذلك نيابةً عنك – حان الوقت لتتعلم مهارة جديدة (ومفيدة جدًا جدًا): تصحيح الأخطاء!

الحل 2

نظرًا لأنه من المفترض أن تكون المعرفات الموجودة في مستند HTML فريدة، فإن WebForms “يشوه” معرف أي عنصر تحكم من جانب الخادم عن طريق دمجه مع معرف كل “حاوية تسمية” في التسلسل الهرمي الخاص بها.

إذا كان بإمكانك الانتقال إلى .NET 4.x، فقد تتمكن من استخدام خاصية ClientIDMode[^] لتجاوز هذا السلوك.

بخلاف ذلك، ستحتاج إلى إيجاد طريقة أخرى لتحديد العنصر الخاص بك. على سبيل المثال:

جافا سكريبت
document.querySelector("*[id$='_txtDDAExpiryDate']")

المستند: طريقة querySelector() – واجهات برمجة تطبيقات الويب | MDN[^]

コメント

タイトルとURLをコピーしました