0

セクションは foo.com/agriculture です。JavaScript の名前に対応するバナー画像があります。内部ページ foo.com/agriculture/harvest には、foo.com/agriculture とは別のバナーが必要です。各ページのバナー スワップ用に使用しているスクリプトは次のとおりです。

<script type="text/javascript"> 
var dir = location.pathname.split("/")[1]; 
//var dir2 = location.pathname;
if (dir == "agriculture")        
document.write('<IMG SRC="/images/ib_agriculture.jpg" WIDTH=1024 HEIGHT=91 BORDER=0>')  
else if (dir == "showcase")
document.write('<IMG SRC="/images/ib_show.jpg" WIDTH=1024 HEIGHT=91 BORDER=0>')  
else if (dir == "contact")      
document.write('<IMG SRC="/images/ib_contact.jpg" WIDTH=1024 HEIGHT=91 BORDER=0>')   
else if (dir == "distribution")     
</script>

次のさまざまなコードを試して、内部ページ foo.com/agriculture/harvest に別のバナーを割り当ててみました。

var dir = location.pathname.split("/")[1]; 
//var dir2 = location.pathname;
if (dir == "agriculture/harvest")        
document.write('<IMG SRC="/images/ib_agriculture_harvest.jpg" WIDTH=1024 HEIGHT=91 BORDER=0>')  
else if (dir == "showcase") 

var dir = location.pathname.split("/")[1]; 
//var dir2 = location.pathname;
if (dir == "harvest")        
document.write('<IMG SRC="/images/ib_agriculture_harvest.jpg" WIDTH=1024 HEIGHT=91 BORDER=0>')  
else if (dir == "showcase") 

上記の両方のスクリプトは、呼び出された foo.com/agriculture/harvest (ib_agriculture_harvest.jpg) ではなく、foo.com/agriculture バナー (ib_agriculture.jpg) を取得し続けます。ページごとに適切なバナーを呼び出すスクリプトを取得する方法がわかりません。

4

1 に答える 1

0

最初に知っておくべきことは次のとおりです。

var segments = "/agriculture/harvest".split('/');
console.log(segments);  // ["", "agriculture", "harvest"]

これを行う方法はたくさんありますが、ほとんどのコードを同じに保つ方法を次に示します。

var dirs = location.pathname.split('/');

if (dirs[1] == 'agriculture') {
    if (dirs[2] == 'harvest')
        ; // set harvest banner
    else
        ; // set agriculture banner
} else if (dirs[1] == 'showcase')
    ; // set showcase banner
else if (dirs[1] == 'contact')
    ; // set contact banner
// etc..

もう少し宣言的な別の方法があります。パス名パターンとイメージ名を含むオブジェクトを構築できます。次に、それをループして最初の一致を取ります。このようにして、追加のコードを書かずに好きなだけ追加できます:

var banners = {
    "^/agriculture/harvest": "ib_agriculture_harvest.jpg",
    "^/agriculture": "ib_agriculture.jpg",
    "^/showcase": "ib_showcase.jpg",
    "^/contact": "ib_contact.jpg"
    // as many more as you need
};

for( var pattern in banners ) {
    var regex = new RegExp(pattern);
    if (regex.test(location.pathname)) {
        document.write('<IMG SRC="/images/'+banners[pattern]+'" WIDTH=1024 HEIGHT=91 BORDER=0>');
        break;
    }
}
于 2012-11-13T22:22:55.573 に答える