Greasemonkey 抓取程序代码抓取字母而不是单词?
Greasemonkey scraper code grabs letters instead of words?
我正在编写一个简单的用户脚本,用于抓取一些体育数据并将其放置在页面顶部的 table 中。但是,不是将每个团队名称放在自己的行中,而是将每个单词分解成单独的字母并将它们放在行中。
来源HTML:
<span class="team-title" id="firstTeamName">Oakland Raiders</span>
示例代码:
$(document).ready(function () {
$('#navFixed').after('<table id="tbone"></table>'); //navFixed is just an element at the top of the page
var team1 = $('span#firstTeamName').text();
for (var i = 0; i < team1.length; i++) {
var txt = $('<tr><td></td></tr>').text(team1[i]);
$('#tbone').append(txt);
}
});
样本HTML输出:
<table id="tbone">
<tr><td>O</td></tr>
<tr><td>a</td></tr>
<tr><td>k</td></tr>
<tr><td>l</td></tr>
...
</table>
理想输出:
<table id="tbone">
<tr>Oakland Raiders</tr>
</table>
有什么想法吗?
.text()
returns a string,这就是你想要的。循环遍历一个字符串会产生单个字母。不要那样做。 ;)
我怀疑你想遍历团队。通过选择所有 .team-title
节点并使用 jQuery's .each()
.
循环遍历它们来做到这一点
请参阅此代码:
$("button").click ( function () {
//--- Greasemonkey javascript follows...
var targTble = $('<table id="tbone"></table>').insertAfter ("#navFixed");
var teams = $(".team-title");
teams.each ( function () {
var teamName = $(this).text ().trim (); //-- Always beware of whitespace
targTble.append ('<tr><td>' + teamName + '</td></tr>');
} );
//--- End of Greasemonkey javascript.
this.disabled = true;
} );
.team-title {background: #ddd; font-size: 80%;}
table {border-collapse: collapse;}
table, td {border: 1px solid green;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<span id="navFixed"></span><br>
<span class="team-title" id="firstTeamName">Oakland Pirates</span><br>
<span class="team-title" id="firstTeam_02"> San Fran Gold diggers</span><br>
<span class="team-title" id="firstTeam_03"> Dallas Cow pokes</span><br>
<button>Run Greasemonkey code</button>
我正在编写一个简单的用户脚本,用于抓取一些体育数据并将其放置在页面顶部的 table 中。但是,不是将每个团队名称放在自己的行中,而是将每个单词分解成单独的字母并将它们放在行中。
来源HTML:
<span class="team-title" id="firstTeamName">Oakland Raiders</span>
示例代码:
$(document).ready(function () {
$('#navFixed').after('<table id="tbone"></table>'); //navFixed is just an element at the top of the page
var team1 = $('span#firstTeamName').text();
for (var i = 0; i < team1.length; i++) {
var txt = $('<tr><td></td></tr>').text(team1[i]);
$('#tbone').append(txt);
}
});
样本HTML输出:
<table id="tbone">
<tr><td>O</td></tr>
<tr><td>a</td></tr>
<tr><td>k</td></tr>
<tr><td>l</td></tr>
...
</table>
理想输出:
<table id="tbone">
<tr>Oakland Raiders</tr>
</table>
有什么想法吗?
.text()
returns a string,这就是你想要的。循环遍历一个字符串会产生单个字母。不要那样做。 ;)
我怀疑你想遍历团队。通过选择所有 .team-title
节点并使用 jQuery's .each()
.
循环遍历它们来做到这一点
请参阅此代码:
$("button").click ( function () {
//--- Greasemonkey javascript follows...
var targTble = $('<table id="tbone"></table>').insertAfter ("#navFixed");
var teams = $(".team-title");
teams.each ( function () {
var teamName = $(this).text ().trim (); //-- Always beware of whitespace
targTble.append ('<tr><td>' + teamName + '</td></tr>');
} );
//--- End of Greasemonkey javascript.
this.disabled = true;
} );
.team-title {background: #ddd; font-size: 80%;}
table {border-collapse: collapse;}
table, td {border: 1px solid green;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<span id="navFixed"></span><br>
<span class="team-title" id="firstTeamName">Oakland Pirates</span><br>
<span class="team-title" id="firstTeam_02"> San Fran Gold diggers</span><br>
<span class="team-title" id="firstTeam_03"> Dallas Cow pokes</span><br>
<button>Run Greasemonkey code</button>