1

jQueryを使用しているグリースモンキースクリプトでスクレイピングしているHTMLファイルがあります。

HTML ページは非常に長いですが<span>、ページ全体に多数の要素があります。

要素が次のようになっているとします。

<span id="spnMX45" name="spnMX45" >16</span>
<span id="spnMX46" name="spnMX46" >10</span>
<span id="spnMX47" name="spnMX47" >11</span>
<span id="spnMX48" name="spnMX48" >5</span>

これらの各要素から必要な値が 2 つあります。「spnMX」の後に続く数字とスパンのテキストが必要です。

これらの値を配列に入力し、処理のために送信します。この大部分は実行できますが、nameまたはid属性を取得するのが問題でした。

現時点で私が持っているものは次のとおりです。

// Grab Max Points for assessments
var maxPointsArray = $("span[id^=spnMX]").map(
    function(data){
    arr = [this.Attr('name')];
    return arr;
    }
);

console.log(maxPointsArray.length);  // yields:  9 <--actual number of span elements in test html
console.log(maxPointsArray);  // yields:  9 undefined objects

私はもう試した:

arr = [this.name];
arr = this.name;
arr = [this.attr('name')];
arr = this.Attr('name');

私はそれを得ることができないようです。スパン属性は取得できませんか? 私はそれを疑いますが、これを理解することはできません。いくつかの異なる入力タイプの要素を使用して、これとまったく同じことを成功させました。このオブジェクトの を正常に取得text()できませんが、そのダング名または ID 属性を取得できないようです。

4

3 に答える 3

1

「これらの各要素から 2 つの値が必要です。「spnMX」の後に続く数字とスパンのテキストが必要です。」

<span>要素はname属性として許可されていません。

ID はそれぞれの名前とまったく同じであるため、次のように使用できます。

$("span[id^=spnMX]").each(function(){
  var text = this.innerHTML; 
    // Returns 16, 10, 11, 5. The text inside each <span>.
  var idNum = this.id.match(/[\d]+$/)[0]; 
    // Returns 45, 46, 47, 48. The parts of each ID after spnMX. 
});

これらの変数を使用すると、残りのタスクはうまくいくはずです:)

ここでjsFiddle。

于 2013-07-01T19:27:55.070 に答える
1

これを使って:

atr = $(this).attr('name');
于 2013-07-01T19:20:51.420 に答える