Javascript автоматическое следующее изображение - PullRequest
1 голос
/ 06 июня 2011

Я создал этот сайт, который использует простую функцию javascript для отображения изображений, основанных на наведении мыши на пользователя или нажатии на пронумерованные поля справа.Теперь после тестирования было определено, что поверх этого должно быть добавлено автоматическое слайд-шоу, чтобы через несколько секунд показывалось следующее изображение.

http://www.philippedollo.com/photo/fineart/f_amw.htm

Есть ли способ изменитьэтот код легко сделать это легко?-

function showPic(whichpic) {
    if (document.getElementById) {
        document.getElementById('placeholder').src = whichpic.href;
        if (whichpic.title) {
            document.getElementById('desc').childNodes[0].nodeValue = whichpic.title;
        } else {
            document.getElementById('desc').childNodes[0].nodeValue = whichpic.childNodes[0].nodeValue;
        }
        return false;
    } else {
        return true;
    }
}

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Использование setInterval().

function getNextPic()
{
    // ???
}

setInterval(function ()
{
    showPic(getNextPic());
}, 3000); // 3 seconds

Нет необходимости в проверке if(document.getElementById), так как функция является кросс-браузерной на 100%.

function showPic(whichpic)
{
    document.getElementById('placeholder').src = whichpic.href;

    document.getElementById('desc').childNodes[0].nodeValue = whichpic.title ?
        whichpic.title : whichpic.childNodes[0].nodeValue;

    return false;
}
0 голосов
/ 06 июня 2011

Следующее должно работать для вас, я проверил его, и он отлично работает на моем конце.

var curPic,
    gallery,
    pics;

function cyclePic(){
    if(curPic < pics.length){
        showPic(pics[curPic]);
    }
    curPic++;
    setTimeout(cyclePic,5000);
}

function showPic (whichpic) {
     if (document.getElementById) {
      document.getElementById('placeholder').src = whichpic.href;
      if (whichpic.title) {
       document.getElementById('desc').childNodes[0].nodeValue = whichpic.title;
      } else {
       document.getElementById('desc').childNodes[0].nodeValue = whichpic.childNodes[0].nodeValue;
      }
      return false;
     } else {
      return true;
     }
}

window.onload = function(){
    curPic = 0,
    gallery = document.getElementById("gallery"),
    pics = gallery.getElementsByTagName("a");
    cyclePic();
}
...