2012-03-13 21 views
1

私はいくつかの要素を反復しており、document.getElementById("id")が動作しますが、$("#id")はありません。どうして?

編集:コードを投稿するのに害はないと思いますか?

function myFunction() { 
    var token, tokens, id, input; 
    $("[id^=\"some_id_\"]").each(function() { 
     tokens = this.id.split("_"); 
     id = tokens[tokens.length - 1]; 
     input = document.getElementById("some_form_element_" + id); //WORKS 
     //input = $("#some_form_element_" + id); //DOESNT, alerts undefined 

     alert(input.value); 
    }); 
} 
+8

をあなたのコードは次のように見えるんか? jQueryが含まれていますか?任意のJSエラーを取得しますか? –

+3

詳細情報を提供 –

+1

どうしますか?表示されるエラーは何ですか? – jackJoe

答えて

5

input.valuevalueがjQueryラッパーオブジェクトに定義されていないことを警告しています。

document.getElementByIdは、DOM要素を直接返します。しかし$()は、DOM要素をラップするjQueryオブジェクトを返します。あなたはここに$('#someId').attr('value');$('#someId').val()

でjQueryの場合の入力の値で取得することができますを示していフィドルです:http://jsfiddle.net/CK2xr/

2

それはおそらくあなたがしている場合です:

  1. IEでのテストと
  2. "名前" 属性の代わりに、 "ID" を使用。

は、Internet Explorerが「name」属性は、「ID」あなたはより多くの不条理APIの一つで、探していると一致した場合に(少なくとも、古いバージョンでは)要素を返すこれらのブラウザは永続idiocies。明確にする

編集 —:Internet Explorerのdocument.getElementById()機能は、「id」属性または「名前」属性にマッチします、そしてそれはDOM内で最初に見つけたものを返します。 jQuery APIは、実際に "#"セレクタ構文のセマンティクスを達成しようとします。—の場合でも、—は "id"属性にのみ一致します。

+0

JqueryはIEで完全に動作します.IdセレクタがIEで失敗するケースを教えてください。 – Ibu

+3

** jQuery **が正しく動作していないと言われましたが、私はIEの 'document.getElementById()'が壊れていると言いました。 – Pointy

+0

@Pointy "意図したとおりに動作します" – jbabey

関連する問題