0

私はGreasmonkeyスクリプトに取り組んでいますが、クラスの内容をテストする方法を知りたくありません。例えば:

<div class="same">Some content</div>
<div class="same">Other content</div>
<div class="same">evenmorecontent</div>
<div class="same">yesthisisalsocontent</div>
<div class="same">youmaynotizedthat</div>
<div class="same">thecontentisdifferent</div>
<div class="same">the cake is yellow</div>

今、私はこのクラスで配列を作成します

var arr = document.getElementsByClassName('same');

次に、配列内の「evenmorecontent」の位置を取得したいと思います。どうすればこれを行うことができますか?

4

3 に答える 3

2

jQueryを使用したい場合は、containsセレクターを使用して1行でこれを行うことができます。

straght JSでは、配列をループする必要があります。

var pos = -1;
for(var x=0;x<arr.length;arr++) {
     if(arr[x].innerHTML.indexOf('evenmorecontent')>-1) {
         pos = x;
    }
}

複数回発生した場合は、最後の位置に戻ります。見つからない場合は-1を返します。

于 2012-12-07T18:31:04.347 に答える
1

これを行うときは、バニラJSとjQueryを混在させないようにしてください。次の関数は、テキストの最初の出現位置を返します。

var getTextPosition = function (selector, text) {
  var pos = -1;
  $(selector).each(function(index) { 
    if($(this).text() === text) {
      pos = index;
      return false;    
    }
  }); 
  return pos;
};

使用例:

getTextPosition(".same", "evenmorecontent");
于 2012-12-07T20:23:15.763 に答える
0

これは、1つのセレクターだけでは不可能です。ループする必要があります:

var sameEl = (function() {
  var sameArr = document.getElementsByClassName('same');
  for (index in sameArr) {
    if (sameArr[index].innerHTML === 'evenmorecontent') {
      return sameArr[index];
    }
  }
})();
于 2012-12-07T18:31:50.453 に答える