0

私は JavaScript を学ぼうとしており、現在取り組んでいるものを純粋な JavaScript ソリューションに変更したいと考えていました。これを JavaScript に変更するにはどうすればよいですか。

var hrefs = $("a[id^=a_l_]").map(function() {
  return this.href;
}).get();

基本的に、「a_l_」を含むすべての ID を検索し、それを配列に入れます。

これが私が試したことです

var matches = [];
var elems = document.getElementsByTagName("a");
for (var i=0; i<elems.length; i++) {
  if (elems[i].id.indexOf("a_l_") == 0)
  matches.push(elems[i]);
  console.log(matches);
}
4

5 に答える 5

2

{}条件には常に括弧を使用してください。そうしないと、遅かれ早かれ間違いを犯すことになります。

for (var i=0; i<elems.length; i++) {
    if (elems[i].id.indexOf("a_l_") == 0) { // <-- {
        matches.push(elems[i]);
        console.log(matches);
    }                                       // <-- }
}
于 2012-05-31T09:58:10.567 に答える
0

最初にフィルターを実行し、次にマップを実行できます。

var hrefs = Array.prototype.filter.call(document.getElementsByTagName("a"), function(node) { 
  return node.id.indexOf("a_l_") === 0;
}).map(function(node) {
  return node.href;
});
于 2012-05-31T10:05:10.940 に答える
0

ES5配列メソッドを想定しています(存在しない場合はシム/ポリフィルを使用してください)

var hrefs = [].filter.call(document.getElementsByTagName('a'), function(el) {
    return el.id.indexOf('a_l_') === 0;
}).map(function(el) {
    return el.href;
});

http://jsfiddle.net/alnitak/Zu3dJ/の動作デモ

于 2012-05-31T10:13:01.177 に答える
0

IDが「a_l_」に等しいすべての要素を見つけて、それらを配列に追加しようとしています。HTML要素に同じIDを持たないことをお勧めします。それらをクラスに移動する必要があります。とにかく、これを試してください:

var matches = [];
var elems = document.getElementsByTagName("a");
for(var i=0; i<elems.length; i++) {
  if(elems[i].id.indexOf("a_l_") != -1) {
    matches.push(elems[i]);
    console.log(matches);
  }
}
于 2012-05-31T10:10:16.103 に答える