jqueryプラグインsimplegallery(http://www.dynamicdrive.com/dynamicindex4/simplegallery.htm)を使用しています。それはドキュメントのように動作します。しかし、私はAjax呼び出しを介してサーバーからランダムなイメージの動的なリストを取得して、ページがロードされるたびにリストが異なるようにしたいのです。サーバー上には、適切なフォルダに必要なイメージだけを見つけて1日に1回移動するシェルスクリプトがあります。次に、現在の画像バッチを見つけて、n個の画像をランダムに選ぶphpスクリプトにajax呼び出しを使用します。 phpスクリプトは、 "var ouput"として以下のようにシミュレートされた文字列を返します。もともと私は配列を手渡すPHPスクリプトを手に入れようとしましたが、そうすることはできませんでした。だから私はちょうど2つの異なるデリミタでPHPスクリプトの文字列を構築し、それを送り返した。その後、クライアント上でjavascriptを使用して、文字列を分割してimages配列を作成します。しかし、文字列から作成された配列と単純な例のような値でハードコードされた配列の違いがあるようです。 私のコードは以下の通りです:誰かが私が間違っていることを知っていますか?simpleGallery(jquery plugin)の配列を作成
var rand_pix = [ ["../img/blog-pix/l-1600-1200-c80e69aa-bc3f-4264-823b-fcdf2614f87c-300x225.jpg ", "../img/blog-pix/l-1600-1200-c80e69aa-bc3f-4264-823b-fcdf2614f87c-300x225.jpg ", "", "" ],["../img/blog-pix/l-1600-1200-4bebed86-e7e7-4395-8f01-97ab7f57c3c5-300x225.jpg ", "../img/blog-pix/l-1600-1200-4bebed86-e7e7-4395-8f01-97ab7f57c3c5-300x225.jpg ", "", "" ],["../img/blog-pix/l-1600-1200-f4013041-1ec8-4a5d-b261-1bb9bb330a38-300x225.jpg ", "../img/blog-pix/l-1600-1200-f4013041-1ec8-4a5d-b261-1bb9bb330a38-300x225.jpg ", "", "" ] ]; // hard coded like simple gallery example
var output = "../img/blog-pix/l-1600-1200-a27e5201-e371-4a36-9eeb-68eb5f95efe2-300x225.jpg:../img/blog-pix/l-1600-1200-a27e5201-e371-4a36-9eeb-68eb5f95efe2-300x225.jpg:pix_text1:pix_text2|../img/blog-pix/l-1600-1200-0bc2fec3-5e17-4447-8cff-2f0649100d6f-300x225.jpg:../img/blog-pix/l-1600-1200-0bc2fec3-5e17-4447-8cff-2f0649100d6f-300x225.jpg:pix_text1:pix_text2|../img/blog-pix/l-1600-1200-5b7447cd-ea80-4b7e-9f9e-c0cfc52ef040-300x225.jpg:../img/blog-pix/l-1600-1200-5b7447cd-ea80-4b7e-9f9e-c0cfc52ef040-300x225.jpg:pix_text1:pix_text2|../img/blog-pix/l-1600-1200-83f3544b-235a-415f-b988-393e24f52d71-300x225.jpg:../img/blog-pix/l-1600-1200-83f3544b-235a-415f-b988-393e24f52d71-300x225.jpg:pix_text1:pix_text2|../img/blog-pix/l-640-480-5db9395b-0394-4c14-9092-8bb001f3912e-300x225.jpg:../img/blog-pix/l-640-480-5db9395b-0394-4c14-9092-8bb001f3912e-300x225.jpg:pix_text1:pix_text2|"; //simulate what is recieved back from the server
var out_list = output.split("|");
var images = []; // dynamic array of arrays that simplge gallry can use
var img_stuff = []; // temp array holder for the four things each image needs
//alert(out_list.length);
for (var i = 0; i<out_list.length-1; i++){
var out_list_items = out_list[i].split(":");
for(var p = 0; p<out_list_items.length; p++){
var items = out_list_items[p].split(":"); // this array holds each sub array of items for an image that can then be added to list array ..
img_stuff.push(items);
}
images.push(img_stuff);
img_stuff = [];
}
alert(rand_pix.constructor); -> function Array() { [native code] }
alert(images.constructor); - > function Array() { [native code] }
しかし次の作品:
var mygallery=new simpleGallery({
wrapperid: "simplegallery1", //ID of main gallery container,
dimensions: [300, 225], //width/height of gallery in pixels. Should reflect dimensions of the images exactly
imagearray: rand_pix,
autoplay: [true, 2500, 2], //[auto_play_boolean, delay_btw_slide_millisec, cycles_before_stopping_int]
persist: false, //remember last viewed slide and recall within same session?
fadeduration: 4500, //transition duration (milliseconds)
oninit:function(){ //event that fires when gallery has initialized/ ready to run
//Keyword "this": references current gallery instance (ie: try this.navigate("play/pause"))
},
onslide:function(curslide, i){ //event that fires after each slide is shown
//Keyword "this": references current gallery instance
//curslide: returns DOM reference to current slide's DIV (ie: try alert(curslide.innerHTML)
//i: integer reflecting current image within collection being shown (0=1st image, 1=2nd etc)
}
});
これはない(それはjQueryのエラーをスローしないが:ノードの階層内の指定された位置に挿入することができない「コード:」3 [このエラーのブレーク] return jQuery(context).find(セレクタ);} e ... y.clean([container.innerHTML])[0];} else)
var mygallery=new simpleGallery({
wrapperid: "simplegallery1", //ID of main gallery container,
dimensions: [300, 225], //width/height of gallery in pixels. Should reflect dimensions of the images exactly
imagearray: images,
autoplay: [true, 2500, 2], //[auto_play_boolean, delay_btw_slide_millisec, cycles_before_stopping_int]
persist: false, //remember last viewed slide and recall within same session?
fadeduration: 4500, //transition duration (milliseconds)
oninit:function(){ //event that fires when gallery has initialized/ ready to run
//Keyword "this": references current gallery instance (ie: try this.navigate("play/pause"))
},
onslide:function(curslide, i){ //event that fires after each slide is shown
//Keyword "this": references current gallery instance
//curslide: returns DOM reference to current slide's DIV (ie: try alert(curslide.innerHTML)
//i: integer reflecting current image within collection being shown (0=1st image, 1=2nd etc)
}
});
私の問題を解決するだけでなく(単純なギャラリーがとる配列を動的に作成する方法)、ハードコードされた配列[["blah"、 "blah" 、 "img1" "img1"]、["blah2"、 "blah2"、 "img2" "img2"]]。
どのような考えですか?これを行う良い方法の提案も歓迎です....ありがとう
私はあなたのようにこれに似た質問をしました。私のjsファイルは、PHPスクリプトから分離されているので、hte ajax call inseadです。私はそれらをできるだけ別々にしておきたいと思います。私がなぜjs配列が異なっているのか分からないなら、私はそれが私が望むように動作するようにその方法を行わなければならないかもしれません。私はあなたに投票しますが、私はこの時点で十分に高い評判を持っていません... – hippeelee
私はhybredアプローチを取ってしまい、あなたがやっていたようにPHPからjs var upに文字列をエコーしました。私はまだこのようなjs配列を作成することとは何かを知りたいと思いますvar rand_pix = [["path/to/image"、 "path/to/image"、 ""、 ""]、["path/to/「画像」、「パス/ to/image」、「」、「」]];誰かが知っている場合、要素を追加するためにpushを使って作成されたjs配列です。ありがとう。 – hippeelee
@ hippee-lee、あなたは大歓迎です。私はあなたの質問に答えることができればいいと思う(上記のコメントで)=) –