2011-12-04 8 views
-1

特定のタグのすべてのHTML要素の特定の属性をjavascriptまたはphp(または他のもの)で変更する方法はありますか?たとえば、javacriptを使用して、ページのすべての "< >"要素を "target = '_ blank'"属性に変更したいとします。助言がありますか?すべてのタグのHTML要素の属性を変更しますか?

+2

何をしようとしたのですか? – Jpsy

+0

私は何も試していません。私はどこから始めるべきかわかりません。 – Proffesor

+4

@JiminP:絶対ナンセンス。 – RightSaidFred

答えて

2

を(a)の上の要素をページ:

$(function() { 
    $('a').attr('target', '_blank'); 
}); 

上記のスクリプトの前に、HTMLのhead要素にjQueryのコピーを含める必要があります。

<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $('a').attr('target', '_blank'); 
     }); 
    </script> 
</head> 
+0

jqueryコード自体が先頭にあるか、「"? – Proffesor

+0

@ user1046024:これだけのJavaScriptが必要な場合は、jQueryを読み込まないでください。 – RightSaidFred

+0

@ user1046024:どちらも頭の中にある必要はありませんが、jQueryのスクリプト要素(最初の要素)はもう一方の要素の前に来る必要があります。共通のコンセンサスはDennisのソリューションを使用するように思われますが、彼はすべてのリンクに適切に適用するためにコードを配置する場所を指定しません。 – tjbp

0

あなたはすべての

$("a").attr("target", "_blank"); 
+0

私はすぐにそれを試してみるよ、ありがとう。 – Proffesor

1

初ような何かを行うことができるはずjqueryを使用して見てください、あなたは、サーバー側の(PHPのような)言語、クライアント - の違いを区別していないようですサイド(Javascriptのような)。差異hereを読んでください。

あなたの質問にお答えします。あなたのための最良の選択肢(と最も簡単な私見)がjQueryを取得し、次のスクリプトを使用することです:次のjQueryコードは、すべてのアンカーに=「_空白」属性ターゲットを追加します

$(document).ready(function() { 
    $('a').attr('target', '_blank'); 
}); 
5

getElementsByTagNameすべてのアンカーをつかむし、その後、あなたがそれらを反復処理することができます:だからあなたhead要素は次のようになります

var list = document.getElementsByTagName("a"), len = list.length; 
while(len--) { 
    list[len].target = "_blank"; 
} 

JSFiddle:ここhttp://jsfiddle.net/zwbCS/

+1

jqueryなどを含むことを示唆していないために、簡単には簡単に実行できるタスクはありません。 –

+1

'document.getElementsByTagName(" a ")'は 'document.links'で置き換えることができます。これはやや効率的です(' target'は非リンクアンカーに意味がありません)。 –

+0

@RobW私の答えは、 "特定のタグのすべてのHTML要素の特定の属性"を変更するより一般的な考え方に向けられていました。 – Dennis

0

は、jQueryの例であります新しいウィンドウで開く場合は、外部リンクのみを開きます。

var myHosts = [ // just in case you are using full abs paths 
    'www.mydomain.com' 
]; 

jQuery(function() 
{ 
    jQuery('a[href^="http"]').each(function() 
    { 
     if (jQuery.inArray(this.hostname, myHosts) == -1 && this.href.indexOf(location.hostname) == -1) 
      jQuery(this).attr('target','_blank'); 
    }); 
}); 

IMHOがあなたのやり方を強制するのは良い考えではありません。最新のブラウザでは、新しいウィンドウ/タブでリンクを開くためのショートカットキーを使いやすくなっています。だから、たとえ彼が外部リンクをクリックしてあなたのサイトを離れるとしても、訪問者があなたのサイトを非常に便利なものにしていれば、彼はあなたに戻ってきます。

サイトの外部リンクについて訪問者にヒントを与えたい場合は、(たとえばCSSなどで)リンクにアイコンを入れて、上記のスクリプトを修正して使用して、目的のCSSを追加することをお勧めしますクラスをそのリンクに追加します。同様に:

jQuery(function() 
{ 
    jQuery('a[href^="http"]').each(function() 
    { 
     if (jQuery.inArray(this.hostname, myHosts) == -1 && this.href.indexOf(location.hostname) == -1) 
      jQuery(this).addClass('external_link '); 
    }); 
}); 

CSS:あなたは、これまで

.external_link { padding-right: 20px; background: url(path/to/the/image) no-repeat right top; } 
関連する問題