javascript - losowanie czasu wykonywania skryptu

0

Witam, mam mały problem. Otóż mam 2 funkcje załóżmy funkcja1 i funkcja2. funkcja1 uruchamiam za pomocą onclick. I teraz chciałbym zrobić tak, żeby funkca1 trwała losowo od 2 do 5 sekund, a później wywoływała się funkcja2. Da się coś takiego zrobić? Nie wiem czy to ma znaczenie, ale funkcje manipulują elementami html na mojej stronie.

Pozdrawiam.

4
function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
function funkcja1() {
  ...
  window.setTimeout(funkcja2,getRandomInt(2000,5000))
}

function funkcja2() {
   ...
}

Coś takiego np ;)

0

Dzięki user image user image user image user image user image user image

0

Jest możliwe, że ten skrypt nie zadziała na firefox?

0

zalezy co wstawisz w miejsce ... ;) ogolnie POWINNO zadzialac. ale kod jest as-is i nic nie gwarantuje + SOA#1 - u mnie dziala (cos podobnego)

0

Korzsystam z instrukcji document.write() w obu fukcjach.

2

Lol.. Nie korzystaj. Nie pytaj dlaczego - po prostu nie korzystaj, tak się nie robi, powoduje to dużo problemów.
Do wstawienia po prostu kodu HTML czy tekstu w dokument użyj innerHTML (Googluj jak się tego używa)

0

Czyli używać np. document.body.innerHTML = ""; ?

1

Jak chcesz całe body podmieniać to tak. jak chcesz pojedynczego diva to sobie skorzystaj z querySelector czy getElementById czy coś innego żeby go wybrać

0

document.body.innerHTML = "<style type='text/css'>...</style><div style='width:100%;height:100%;margin:0;'><object style='width:100%;height:100%;' name='plugin' data='http://domain.com/file.swf' type='application/x-shockwave-flash' ></object></div>";

Napisałem taki kod, ale nie wiem czemu na frajerfox'ie nie wyświetla tego pliku. Natomiast jeśli wejdę w adres http://domain.com/file.swf to normalnie się wyświetla. Czy to jakiś błąd w kodzie? Na innych przeglądarkach sprawdzałem i jest ok.

1

height 100% odnosi się do wysokości rodzica. jeżeli BEZPOŚREDNI rodzic nie ma ustawionej wysokości - .... ciężko powiedzieć co się dzieje w przypadku flasha. być może wysokość jest wtedy 0.

ustaw wymiary w px i zobacz

0

Rzeczywiście w px działa LOL. Tylko, że css miałem tak ustawione body{height:100%}div{height:100%}object{height:100%;}

1

to jeszcze o html zapomniałeś

0
dzek69 napisał(a):

to jeszcze o html zapomniałeś

user image user image user image user image user image user image user image user image

Nie pomyślałem o tym. Tymbardziej, że na innych przeglądarkach wszystko było ok, tylko frajerfox musiał coś spie***.

0

Dziwne, bo w tym przypadky function1 się uruchamia (za pomocą onclick), ale function2 już nie. Natomiast gdybym document.getElementById("g1") zamienił na document.body.innerHTML zadziałałby kod.

function function1() {
  document.body.innerHTML = "<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'/><style type='text/css'>#g1 {position: relative;width:420px;height:280px;float: left;padding: 25px 0 25px 20px;}</style><div id='g1'></div>";
window.setTimeout(function2,getRandomInt(2000,4000))
}
function function2() {
document.getElementById("g1") = "<div class='g2'></div>";
}
2

pewnie dlatego, że próbujesz przypisać string do obiektu - pominąłeś innerHTML

0

Taki błąd... Tak czy siak dzięki za pomoc. Człowiek codziennie się czegoś uczy nowego :)

user image user image user image user image user image user image user image user image

0
function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
function funkcja1() {
  ...
  window.setTimeout(funkcja2,getRandomInt(2000,5000))
}
 
function funkcja2() {
   ...
}

A wiecie może czemu ten skrypt nie działa na aplikacje mobilne?

1 użytkowników online, w tym zalogowanych: 0, gości: 1