سؤال

أي شخص يعرف لماذا يعمل تعبير المسك التالي في فايرفوكس ولكن ليس في IE أو Chrome؟

$('form :hidden:last').attr('name')

يكشف بيان التنبيه أنه في IE التعبير غير محدد.

تحديث: هنا بعض HTML فشل.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
   <head>
      <script type="text/javascript" src="/js/jquery-1.3.2.min.js">
      </script>
      <script type="text/javascript">
         function addItem() {
           var v = $('form :hidden:last').attr('name');
           var n = /(.*)input/.exec(v);
           var newPrefix;
           if ( n[1].length == 0 ) {
             newPrefix = '1';
           } else {
             newPrefix = parseInt(n[1])+1;
           }
           var lastExercise = $('form tr:last select:first').attr('value');
           var oldElem = $('form tr:last');
           var newElem = oldElem.clone(true);
           var lastHidden = $('form :hidden:last');
           lastHidden.val(newPrefix);
           var pat = '=\"'+n[1]+'input';
           newElem.html(newElem.html().replace(new RegExp(pat, 'g'), '=\"'+newPrefix+'input'));
           newElem.appendTo('table');
           $('form tr:last select:first').attr('value', lastExercise);
           $('form :hidden:last').val('');
         }
         function removeItem() {
           var rows = $('form tr');
           if ( rows.length > 2 ) {
             rows.filter(":last").remove();
             $('form :hidden:last').val('');
           } else {
             alert('Cannot remove any more rows');
           }
         }
      </script>
   </head>
   <body>
         <form autocomplete="off" method="post" action="">
            <div>
               <input type="button" onclick="addItem(); return false;" value="Add Item" />
               <input type="button" onclick="removeItem(); return false;" value="Remove Last Item" />
            </div>
            <table>
               <tr>
                  <th>Name</th>
                  <th>Weight</th>
               </tr>
               <tr>
                  <td>
                     <input type="text" name="input1" id="input1" value="" />
                  </td>
                  <td>
                     <input type="text" name="input2" id="input2" value="" />
                     <select name="input3" class="unitsInput">
                        <option value="0">
                           Pounds
                        </option>
                        <option value="1">
                           Kilograms
                        </option>
                     </select>
                  </td>
                  <td>
                     <input type="hidden" name="input4" id="input4" value="" />
                  </td>
               </tr>
            </table>
            <div>
               <select name="input8">
                  <option value="0">0</option>
                  <option value="1">1</option>
                  <option value="2">2</option>
               </select>
            </div>
            <div>
               <input type="submit" name="submit" id="submit" value="Submit" />
            </div>
         </form>
   </body>
</html>

لا يوجد حل صحيح

نصائح أخرى

هل جيس الخاص بك ملفوفة في $(document).ready( ... ) ?

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

$(document).ready(function() {
    $('form :hidden:last').attr('name')
});

من الضروري القيام بذلك لضمان تحميل DOM بالكامل قبل بدء تشغيل رمز JQuery الخاص بك. خلاف ذلك، لا يوجد دوم (مستند) لاستعلامه.

هل تقوم بتشغيل هذا الاستعلام بعد تحميل DOM بالكامل واستخدام أحدث إصدار من JQUERY؟ المثال أعلاه من دان يعمل بشكل جيد حتى في IE6 بالنسبة لي.

تمكنت من الحصول عليها لتشغيل غرامة في IE7.
كيف تبدو HTML الخاصة بك؟

هنا هو ما يشبه الألغام:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
</head>

<body>
<form action="" method="get" name="testform">
<input name="bob" type="hidden" value="" />
<input name="steve" type="hidden" value="" />
<input name="william" type="hidden" value="" /></form>
<script type="text/javascript">
    $(document).ready(function(){
        alert($('form :hidden:last').attr('name'));
    });
</script>
</body>
</html>

يبدو أن IE يعامل عناصر الخيار في النهاية مخفية. تغيير كل "...: مخفية ..." محددات في جافا سكريبت إلى "... الإدخال: مخفي ..." يبدو أن حل المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top