@CuteOne: owszem, kombinowałem w ten sposób, ale niestety po dodaniu timeotów, funkcja zauważa zmianę zmiennej dopiero po wywołaniu, a ja bym chciał by nastąpiło to natychmiast. Kod HTML wygląda tak:
<input type="hidden" id="curr1" value="1">
<li id="pointer1"><a href="#" onclick="forceChange = 1">1
</a></li> <li id="pointer2"><a href="#" onclick="forceChange = 2">2
</a></li> <li id="pointer3"><a href="#" onclick="forceChange = 3">3
</a></li> <li id="pointer4"><a href="#" onclick="forceChange = 4">4
</a></li> <li id="pointer5"><a href="#" onclick="forceChange = 5">5
</a></li> <li id="pointer6"><a href="#" onclick="forceChange = 6">6
</a></li>
natomiast JS:
var forceChange = 0;
function carousel1() {
timeDelay = 4000;
currentInput = document.getElementById('curr1');
if (forceChange != 0) {
currentInput.value = forceChange;
}
currentValue = parseInt(currentInput.value);
forceChange = 0;
pointerSelected(currentValue);
if (currentValue<6) {
currentInput.value = parseInt(currentInput.value)+1;
} else {
currentInput.value = 1;
}
window.setTimeout('carousel1();', timeDelay);
}
pointerSelected(currentValue) jedynie zmienia nazwy klas, więc kod nie jest potrzebny. Po kliknięciu owszem, karuzela kręci się od danego momentu, jednak zmiana następuje dopiero po kolejnym wywołaniu carousel1() co nastepuje po pewnym opoznieniu okreslonym w timeDelay.