3

スライドショーのコードがあります。しかし、私がやりたいのは、ユーザーがフォルダーの名前を入力するための入力ボックスをロードし、次にそのフォルダーを見つけるためのページをロードして、そのフォルダーの各画像を表示することです。私はこれを2つの異なるページで行うことができました。1つは入力ボックスがあり、もう1つは画像が表示されています。

ただし、Webページをサーバー上で実行したいので、画像ソースをハードコーディングしたくはありませんが、会社のさまざまな場所でさまざまなスライドショーが実行される可能性があります。私が行った調査から、フォルダ内の各画像をループするためにforループが必要だと思いますが、100%確実ではありません。これは私がこれまでに得たものです:

前のページのフォルダ名を渡しました。しかし、ご覧のとおり、画像パスはまだハードコーディングされています。forループで各画像をループし、正しい入力をしている限り、画像がどこにあるか、いくつあるかに関係なく、すべてをWebページに表示したいと思います。フォルダ/スライドショー名。画像フォルダはすべてネットワークパス上の同じ場所にあるためです。

   <!DOCTYPE html>
<html>

<head>
<script type="text/javascript">
var first = getUrlVars()["SlideShowTest"];

function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
}
//alert(first)
//-->
</script>


</head>
<body>


<script type="text/javascript">
<!--
var step=1
function slideit(){
document.images.slide.src=eval("image"+step+".src")
if(step<3)
step++
else
step=1
setTimeout("slideit()",2500)
}
slideit()
</script>

</body>
</html> 
4

1 に答える 1

1

うまくいきそうです。

スタイルに関しては、イメージを配列に入れて eval を取り除くことができます。

var images= [];
var image;
image= new Image();
image.src= '...';
images.push(image);

for(var i=0; i<images.length; ++i) { 
   image= images[i];
   ...
}

setInterval("slideit()",2500); を使用することもお勧めします。setTimeout の代わりに 1 回。

于 2012-09-27T10:37:41.263 に答える