javascriptがページ内のすべての内部href =#の配列を作成する方法はありますか?javascriptはページ内のすべての内部href =#のリストを作成しました
アイデアは、ページ上のすべてのアンカーへのリンクを含むドロップダウンメニューを持つことです。
javascriptがページ内のすべての内部href =#の配列を作成する方法はありますか?javascriptはページ内のすべての内部href =#のリストを作成しました
アイデアは、ページ上のすべてのアンカーへのリンクを含むドロップダウンメニューを持つことです。
必要なブラウザのサポートによって、あなたがこれを行うことができます:
var elems = document.getElementsByTagName('a');
var hashes = Array.prototype.map.call(elems, function(v, i) {
return v.hash;
}).filter(function(v, i, a) { return !!v && a.indexOf(v) === i; });
あなたはMDNが提供するシムを使用して古いブラウザのサポートを得ることができます。あなたのコメントで
、あなたはname
代わりのhref
を望んでいることを指摘しました。
あなたはこれを行うことができ、より多くのブラウザサポートを自動的に提供しますが、まだindexOf()
のサポートを受けたいと思うでしょう。
var elems = document.getElementsByTagName('a');
var names = [];
for(var i = 0, len = elems.length; i < len; i++) {
if(elems[i].name && names.indexOf(elems[i].name) === -1) {
names.push(elems[i].name);
}
}
'!! v && a.indexOf(v)==== i;'は私にとっては魔法です。なぜ、 'indexOf'チェックが失敗するのですか? – Raynos
@Raynos:重複があるとき。このページでこれをコンソールにコピー/ペーストします。 :) *(またはハッシュがないときは、あなたはそれを知っていたと思います)* – user113716
ありがとう、これは魅力的でした。 indexOfリファレンスもありがとう。非常に役立つので、私はすべてがie6に戻るように努力し続けています。 – unomyname
jQueryのは、これはかなり簡単です:ちょうどページ上のすべての「選択」フィールドに「オプション」フラグのテキストとして「HREF」フィールドのテキストを追加し
$("a").filter(function() {
return $(this).attr("href")[0] == "#";
}).each(function() {
$("select").append("<option>" + $(this).attr("href") + "</option>");
});
を。明らかに、あなたのニーズに合わせて調整する必要がありますが、それはあなたを始めるはずです。
アンカーへのリンクの一覧ではなく、アンカーの一覧を表示したくありませんか? a[name],a[id]:not([href])
セレクタを使用して、すべてのアンカー要素を名前またはhrefのないIDで検索します。
$('a[name],a[id]:not([href])').each(function(i,e){
var name = $(e).attr('name') | $(e).attr('id');
$('<option/>', { value: '#'+name, text: e.text() }).appendTo('#TheSelect');
});
これは、必要な配列を返す非常に簡単な関数です。 jQueryの必要はありません。
function linksArray(){
var links = document.getElementsByTagName("a"), linklist = [];
for(var i=0, len=links.length; i<len; ++i){
linklist.push(links[i].attributes.getNamedItem("href").value);
}
return linklist;
}
これを実行するには、コードライブラリをロードすることをお勧めしますか?または、あなたの質問にあなたが選んだタグを尊重しなければなりませんか? – user113716
'document.links'はこのために調整されています。 –
私はjqueryでの経験がゼロであるので、私はストレートjavascriptを考えていたが、再考するかもしれない。基本的に、今のところ私は必要なのは、アンカーのリストを出力するか、アラートにするか、あるいはdocument.writeなどのようにアンカーのリストを出力することだけです。それでさらに何をするべきかを知ることができます – unomyname