2016-09-12 8 views
-1

必要な文字数を減らすために、JavaScriptをjQueryに変換したいと考えています。 jQuery要素を名前で取得する

var shorty = $('.DPtag > td:eq('+i+')').attr('id'); 
var shorty = $('[name=DPdays] > td:eq('+i+')').attr('id'); 
var shorty = $('[name=DPdays] > td:eq('+i+')').id; 

しかし、どれも機能しません:私はそれらを試してみました。これは私のHTML & Javascriptを

var shorty = document.getElementsByName("DPdays")[0].getElementsByTagName("td")[i].id;
<tr class="DPtag" name="DPdays"> 
 
\t <td id="MO">&nbsp;</td> 
 
    <td id="DI">&nbsp;</td> 
 
    <td id="MI">&nbsp;</td> 
 
    <td id="DO">&nbsp;</td> 
 
    <td id="FR">&nbsp;</td> 
 
    <td id="SA">&nbsp;</td> 
 
    <td id="SO">&nbsp;</td> 
 
</tr>

です。どうやってやるの?

+0

'$( 'DPtag> TD:EQ(' + i + ')')。attr( 'id'); 'うまく動作するはずです。 '$( '.DPtag> td)'は何を返しますか? –

+0

最初と2番目のセレクタは正しく、3番目のセレクタは正しくありません。 https://jsfiddle.net/LgjoLc14/ – Mohammad

+0

あなたの質問に詳細を追加してください。実際にはあなたのことは期待通りに動くはずです。だからあなたのコードに何か間違っている... – eisbehr

答えて

0

実際にあなたがより簡潔にそれを書くためにはjQueryを必要としません:

document.querySelectorAll('[name=DPdays] td')[i].id 

しかし、あなたはjQueryの

を好む場合
$('[name=DPdays] td')[i].id 
2

少なくともChromeとFirefoxでは、タグに含まれていない場合、<td>要素を選択できません。とにかくあなたがそれをしないと、有効なHTMLではありません。 iはすべてのIDを取得するためのループ内の変数であると仮定します。 jQueryのでは、そのようにそれを行うことができます:

var $td = $('.DPtag td'); 
for (var i = 0; i < $td.length; i++) { 
    var shorty = $td[i].id; 
    console.log(shorty); 
} 

フィドル:https://jsfiddle.net/q3q076tn/

EDIT:もちろんあなたが交換するような単純なようにjQueryせずにそれを書くことができます:

var $td = $('.DPtag td');

と:

var $td = document.querySelectorAll('.DPtag td');

重要なノード:質問と受け入れられた回答で行われたようにデータを取得することは良い考えではありません。

  1. あなたは、ループのすべての単一の 反復におけるすべての<td>の要素を検索/選択し直します。それだけで不必要に遅くなります。
  2. 有効なHTMLではない<tr>タグのnameプロパティを使用します。すでに言及したように、CBroe。参照:https://developer.mozilla.org/en-US/docs/Web/API/Element/nameこれは、クラスまたはIDで選択する理由です。
+0

またはより機能的な方法で 'console.log($ {'DPtag td')} map(function(td){return td.id});' –

関連する問題