2016-06-27 16 views
1

だから、要素上に背景画像をランダムに設定したい。ここでランダムに背景画像を設定する

は、私がしようとしているものです:

<div id="headImg"></div> 

<script> 

    $(document).ready(function() { 

    var images = ['bg.jpg', 'bg2.jpg', 'bg3.jpg', 'bg4.jpg', 'bg5.jpg', 'bg6.jpg', 'bg7.jpg', 'bg8.jpg']; 

    $('#headImg').css('background-image', 'url(<?php echo get_template_directory_uri(); ?>/assets/images/' + images[Math.floor(Math.random() * images.length)] + ')'); 

    }); 

</script> 

私はそれが仕事を得るカント以来、私は明らかに間違って何かをやっています。

これはワードプレスです。だから私は設定して、このようなインライン背景画像ならば、それは動作します:

style="background-image: url(<?php echo get_template_directory_uri(); ?>/assets/images/bg.jpg);" 

しかし、私はランダムに背景画像をインラインで設定するためにjQueryのを使用したいです。これも可能ですか?

ご協力いただきまして誠にありがとうございます。

+0

※これは可能ですか? - 試してもうまくいきましたか?あなたはあなたの 'images'配列宣言の末尾にカンマを持っています。 –

+0

@JonnyHenly:いいえ、変更なしではない2. –

+1

@ agon024: 'get_template_directory_uri();'は何を返しますか? –

答えて

2

<?php echo get_template_directory_uri(); ?>は、サーバーからページが要求されたときに評価されるためです。

:しかし、あなたはこれを形成するために、 get_template_directory_uri();の戻り値で <?php echo get_template_directory_uri(); ?>を交換し、場合

$('#headImg').css('background-image', 'url(<?php echo get_template_directory_uri(); ?>/assets/images/' + images[Math.floor(Math.random() * images.length)] + ')'); 

:(。PHPはserver side言語です)

そこで、このラインは、動的にjQueryを使って生成された何も達成していません

$('#headImg').css('background-image', 'url((return value here)/assets/images/' + images[Math.floor(Math.random() * images.length)] + ')'); 

コードが正しく実行されます。

編集:あなたは私のポスト以下のコメントからもわかるように

、人々は言った - 当然のように - 特定のケースでは、彼のコードが働いてきたであろう。

しかし、PHPが埋め込まれているコードは、コードが要求されているファイル内にある場合にのみ機能します。 (つまり、別のページの外部コードではなく、インラインコードです)。この場合、jQueryはで、同じファイル内にではありませんでした。そのため、問題のPHPタグを削除する必要がありました。総集編で

:Javascriptを要求したの.phpファイルではなかったので

この解決策が必要でした。したがって、PHPタグは評価されませんでした。 (PHPタグはjavascriptファイルでは何も意味しません)。

しかし、javascriptが要求されたPHPファイルに含まれていたとしたらうまくいきました。

+0

これはサーバー上で実行されていないことを誰に伝えますか? – Jojo01

+0

@ Jojo01:ハァッか。あなたの質問を教えてください。私の答えを読んだ? –

+0

PHPは、ページがロードされる前にディレクトリの場所にエコーしますが、あなたが言ったように、動作するサーバー上にある必要があります。したがって、あなたの答えは、このページがサーバーから要求されていないことを意味します。しかし、どうやってそれを知っていますか? – Jojo01

0

あなたが7つのイメージを持っているので、あなたは多分ちょうどこのようにそれを行うことができます。基本的にはちょうどそのBGにその番号を追加し、1と7の間の乱数を作成し、.JPG例えばBG5でき

var rand = Math.floor(Math.random() * 7) + 1; 
$('#headImg').css('background-image', 'url(<?php echo get_template_directory_uri(); ?>/assets/images/bg' + rand + '.jpg)'); 

。 jpg

+0

なぜdownvote?これは動作しますが、画像を追加または削除する場合は乱数の制限を変更する必要があります。これはまた、多くのことを単純化します。 – Jojo01

+3

これは、何かを単純化するものではなく、イメージに命名規則を適用し、bg1.jpgが存在しないためハードコーディングされた範囲を持つため動作しません。 – Vectorjohn

関連する問題