-1

文字数を減らす必要があるため、javascript を jQuery に変換したいと考えています。これは私のHTMLとJavascriptです

var shorty = document.getElementsByName("DPdays")[0].getElementsByTagName("td")[i].id;
<tr class="DPtag" name="DPdays">
	<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>

私はそれらを試しました:

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;

しかし、どれも機能しません。どうやってやるの?

4

2 に答える 2

2

少なくとも Chrome と Firefox では、要素がタグ<td>に含まれていない場合、要素を選択できないことに注意してください。<table>そうしないと、とにかく有効な 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/

編集:もちろん、交換するだけで簡単にjQueryなしで書くことができます:

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

と:

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

重要なノード:質問や受け入れられた回答で行われたようにデータを取得することはお勧めできません。

  1. <td>ループの反復ごとにすべての要素を再選択/検索します。それはそれを不必要に遅くします。
  2. <tr>有効な HTML ではないタグにname プロパティを使用しています。CBroeから既に述べたように。参照: https://developer.mozilla.org/en-US/docs/Web/API/Element/nameこれが、クラスまたは ID で選択する必要がある理由です。
于 2016-09-12T12:31:26.153 に答える