2009-06-01 42 views
1

次のJQuery式はFirefoxでは動作しますが、IEやChromeでは動作しない理由を知っていますか?JQueryはFirefoxで動作しますが、IEでは動作しません

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

アラートステートメントは、IEでは式が未定義であることを示しています。

UPDATE:ここで失敗するいくつかの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> 
+3

いくつかのHTMLを提供すれば、この回答が得られるでしょう。 –

+0

私が追加したコードでは、addItemの最初の行はundefinedを返します。 – Khanpo

答えて

0

IE7でうまく動作するようになった。
何あなたのHTMLは次のように見えますか? DOMが完全にロードさとjQueryの最新バージョンを使用した後、あなたがこのクエリを実行してください

<!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> 
+0

私のHTMLは複雑です。私はIE6も使用していました。私は失敗した簡単なHTMLの例を見つけようとします。 – Khanpo

1

:ここ

は私がどのように見えるのですか?ダンから 上記の例では、私のためにも、IE6で正常に動作します。

2

あなたのJQueryは$(document).ready(...)にラップされていますか?例えば

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

あなたのjQueryのコードが実行を開始する前にDOMが完全にロードされたことを確認するために、これを行うことが不可欠です。それ以外の場合は、照会するDOM(ドキュメント)はありません。

0

IEは、最後のオプション要素を非表示として扱っているようです。 javascriptの "...:hidden ... ..."セレクタを変更すると、問題を解決するように見えます。

関連する問題