Java Script - управление проигрыванием слайд-шоу

  • Автор темы natalie
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

natalie

#1
Здравствуйте,

есть кнопки stop, play, previous slide - это управление слайд-шоу. функции вызываются, например для кнопки previous: <button onclick="previous()">Previous</button>

Java Script все-время выдает ошибку "Недопустимый Аргумент" - передается в функцию f()...

я совсем замучилась, может я вообще не с той стороны пытаюсь решить задачу? может тут вообще по-другому писать надо... помогите пожалуйста

Код:
<script type="text/javascript">
var i=0;
var timer;
var param='1';

// array width's for slideshows - resized sizes, according to sets in admin area
var widths = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slideWidth[$i]."',";}
?>]
// array height's for slideshows - resized sizes, according to sets in admin area 
var heights = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slideHeight[$i]."',";}
?>]


var descriptions = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slide['description'.$i]."',";}
?>]
var links = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slide['link'.$i]."',";}
?>]

var titles = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slide['title'.$i]."',";}
?>]

var images = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slide['linkImage'.$i]."',";}
?>]

function previous()
{  timer=setInterval(f('2'),2000);}
function stop(){clearInterval(timer);}
function play(){
timer=setInterval(f('1'),2000);
}
function f(param){

if (param=='1'){
img1.src='slides/'+images[(i=(i==<?php echo $amountOfSlides-1; ?>?0:i+1))];
img1.width=widths[i];
img1.height=heights[i];
tit1.innerHTML=titles[i];
link1.href=links[i];
desc1.innerHTML=descriptions[i]; 
}
if (param=='2'){
i=i-1;
img1.src='slides/'+images[(i=(i==<?php echo $amountOfSlides-1; ?>?0:i+1))];
img1.width=widths[i];
img1.height=heights[i];
tit1.innerHTML=titles[i];
link1.href=links[i]
desc1.innerHTML=descriptions[i];		
}

}
</script>
 
K

Kuljok

#2
Java Script все-время выдает ошибку "Недопустимый Аргумент" - передается в функцию f()...

Код:
function previous()
{  
timer=setInterval(f('2'),2000);
}

function play()
{
timer=setInterval(f('1'),2000);
}
</script>
Привет!
Во всем коде не разбирался. Может еще где ошибки есть. Но в данном случае ошибка в вызове setInterval. Дело в том, что туда нужно передавать либо указатель на функцию (имя функции без скобок), либо вызов функции, но как строку. Т.е. вызов должен быть вида:

Код:
time = setInterval("f('2')", 2000);
 
N

natalie

#3
Спасибо,

только скрипт уже написан, починен, запущен... мне сослуживцы помогли

но все равно огромное спасибо :)
 
N

natalie

#6
Код:
<script type="text/javascript">
var i=0;
var timer;
var param='1';

// array width's for slideshows - resized sizes, according to sets in admin area
var widths = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slideWidth[$i]."',";}
?>]
// array height's for slideshows - resized sizes, according to sets in admin area 
var heights = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slideHeight[$i]."',";}
?>]


var descriptions = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".str_replace("'","'",$slide['description'.$i])."',";}
?>]
var links = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slide['link'.$i]."',";}
?>]

var titles = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slide['title'.$i]."',";}
?>]

var images = [<?php 
for ($i=1; $i<=$amountOfSlides; $i++)
{echo "'".$slide['linkImage'.$i]."',";}
?>]

function increment( _i ) {
_i=(_i==<?php echo $amountOfSlides-1; ?>?0:_i+1);
return _i;
}

function decrement( _i ) {
_i=(_i==0?<?php echo $amountOfSlides-1; ?>:_i-1);
return _i;
}

function render( i ) {
var img1 = document.getElementById('img1');
var tit1 = document.getElementById('tit1');
var desc1 = document.getElementById('desc1');	
var link1 = document.getElementById('link1'); 
img1.src='slides/'+images[i];
img1.width=widths[i];
img1.height=heights[i];
tit1.innerHTML=titles[i];
link1.href=links[i]
desc1.innerHTML=descriptions[i];
}

function stop(){
clearInterval(timer);
}

function previous() {
stop();
i = decrement( i );
render( i );
}

function palaing() {
i = increment( i );
render( i );
}


function next() {
stop();
i = increment( i );
render( i );
}

function play(){
timer=setInterval('palaing()',5000);
}

</script>
в коде есть php вставки - это мы достали из базы select-ом картинки, которые собственно должны сменяться. у каждой картинки title, ссылка, description, ссылка для самой картинки.

в html там, где должна появляться картинка, пишем:

Код:
<div id="latest_slideshow">

<div id="latest_slideshow_img">
<a id="link1" href="<?php echo$slide["link1"]; ?>"><img id="img1" src="slides/<?php echo $slide["linkImage1"]; ?>" /></a>
<div id="buttons"><button onclick="previous()">Previous</button>  <button onclick="play()">Play</button><button onclick="next()">Next</button> <button onclick="stop()">Stop</button></div>
</div>



<div><div id="tit1" class="latest_slideshow_head"><?php echo $slide["title1"]; ?></div></div>

<div><div id="desc1" class="latest_slideshow_desc"><?php echo $slide["description1"]; ?></div><//div>
</div>
внизу страницы сразу запускаем слайд шоу: <script type="text/javascript">
play();
</script>

получаем вот что:

http://208.109.13.212/news/box.php
 
Статус
Закрыто для дальнейших ответов.