PC Ekspert Forum

PC Ekspert Forum (https://forum.pcekspert.com/index.php)
-   Web dizajn, programiranje i ostalo (https://forum.pcekspert.com/forumdisplay.php?f=39)
-   -   Pomoc oko javascripta ? document.getElementById... (https://forum.pcekspert.com/showthread.php?t=266530)

Aleksandar / 09.01.2015. 12:06

Pomoc oko javascripta ? document.getElementById...
 
Pozdrav svima,

Sastavio sam html kod i ubacio javascript,

HTML:

<html>
<body>
<p id="a">1</p>
<p id="b">2</p>
<p id="v">3</p>
<script type="text/javascript">
document.getElementById("a").innerHTML = "<div>prvi tekst</div>";
document.getElementById("b").innerHTML = "<div>drugi tekst</div>";
document.getElementById("v").innerHTML = "<div>novi tekst</div>";
</script>
</body>
</html>

kod mene ovo radi, ali prvo se prikaze 1 2 3, pa tek poslije 1-2 sekunde se ispravi na prvi tekst, drugi tekst, novi tekst. Jel moze nesto da se doda u javaskript sablon pa da se sve izvrsava prije nego sto se stranica prikaze na zaslonu, mislim postoji li naredba koja ne dozvoljava browseru bilo sta da radi dok se sve js naredbe ne izvrse.

Unaprijed hvala .

sinisa1989 09.01.2015. 18:15

Pretpostavljam da ima puno više html kôda kad kažeš da se javascript izvrši nakon 1-2 sekunde. Probaj s ovim:
HTML:

<html>
    <body onload="changeContent();">
        <p id="a">1</p>
        <p id="b">2</p>
        <p id="v">3</p>
        <script type="text/javascript">
            function changeContent() {
                document.getElementById("a").innerHTML = "<div>prvi tekst</div>";
                document.getElementById("b").innerHTML = "<div>drugi tekst</div>";
                document.getElementById("v").innerHTML = "<div>novi tekst</div>";   
            }
        </script>
    </body>
</html>

P.S. Jel si razmišljao o nekom libraryu, npr. jQuery?

Aleksandar / 09.01.2015. 19:39

Jesam. Samo o njemu malo znam. A čuo sam da u njemu ima ta opcija mislim da se zove e.preventDefault (); , Samo neznam kako se pravilno korist i gdje se uglavljuje, ...?

Ali gornji odgovor mi ne odgovara jer ja javascript koristim kao eksternu skriptu, kao sastavni dio browsera (Greasemonkey), pa html kod ne mogu minjati (mislim ono body).

drazac 09.01.2015. 21:28

Mozda uspijes naci odgovor ovdje
http://stackoverflow.com/questions/2...page-is-loaded

e.preventDefault
http://stackoverflow.com/questions/1...s-return-false

ShebY 09.01.2015. 22:43

Za jQuery sintaksa ide
$("#a").html("
prvi tekst"
");
Itd. za ostale elemente

Aleksandar / 10.01.2015. 20:03

Znam i za taj šablon, ali je problem samo da se to sve odradi brzo .

Aleksandar / 12.01.2015. 18:22

Znači niko nezna ili ... ?

drazac 12.01.2015. 19:48

Testirao sam tvoj kod unutar html datoteke koju sam napravio, i promjena iz 1, 2, 3 u tekst se događa instantno, bez zadrske. No to je na maltene praznoj stranici. Kako se ponasa kada stranica ima kompletan sadrzaj, trenutno nemam prilike testirati.

Ako iz nekog razloga ne mozes iskoristiti jQuery library, pokusat napraviti mali "hack":

Napisi unutar js-a:

var id_a = document.getElementById("a");
var id_b = document.getElementById("b");
var id_v = document.getElementById("v");

id_a.style.display="none";
id_b.style.display="none";
id_v.style.display="none";

Prvo sakrij elemente koji sadrze gornje id-jeve. (umjesto display, mozes koristiti i visibility ili opacity svojstvo ako hoces). Ako se pri ucitavanju stranice elementi sakriju instantno, tada izvrsi ostatak coda:

id_a.innerHTML = "
prvi tekst
";
id_b.innerHTML = "
drugi tekst
";
id_v.innerHTML = "
novi tekst
";

id_a.style.display= "block";
id_b.style.display= "block";
id_v.style.display= "block";

Ako radi, ovaj kod mozes kasnije promijeniti da ne bude ovako redundantan.

Aleksandar / 12.01.2015. 22:33

Sad se pojavio problem što kada prvi put otvaram stranicu pokazuje "1" (recimo), a kada osvježavam js se tek onda aktivira, pa sam probao i isključiti preglednik, i opet otvorim, isto, prvo ništa, a tek kada osvježim ono radi .

Nikako neće odmah.

ShebY 12.01.2015. 23:12

glupo pitanje, dali ti se nalazi taj js u footeru?
i dali si ga probao stavljati u document ready?
Code:

// self executing function here
(function() {
  // your page initialization code here
  // the DOM will be available here

})();


Aleksandar / 13.01.2015. 22:10

Evo sada sam ovako napisao:

HTML:

// ==UserScript==
// @name          jQuery Example
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// ==/UserScript== 
// Append some text to the element with id someText using the jQuery library.4
$(document).ready(function(){
 var id_a = document.getElementById("a");
 id_a.style.opacity="none"; id_a.innerHTML = "<div>prvi tekst</div>";
id_a.style.display= "block"; event.preventDefault();
 });

i isto, kada prvi put otvara ništa se ne dešava, tek kada otvorim i osvežim ono radi . Prvi put nikako neće.

drazac 14.01.2015. 00:26

Radis li na lokalnom projektu ili online?

Ako je lokalni, stvari znaju biti malo usporene (bar je meni tako)... a ako je online.

Probaj napraviti ovo:

Unutar CSS-a, stavi:

#a, #b, #v {
display: none;
ili
visibility: hidden;
ili
opacity: 0;
}

A onda unutar js-a (sobzirom da korisits jQuery)

$(document).ready(function(){
var id_a = $("#a");
var id_b = $("#b");
var id_v = $("#v);

id_a.innerHTML = "
prvi tekst
";
id_b.innerHTML = "
drugi tekst
";
id_v.innerHTML = "
treci tekst
";

$("#a, #b, #v").css({
ovisno o toga sto ti je unutar css-a, stavi ovo:
"display": "block";
ili
"opacity": 1;
ili
"visiblity": "visible";
});
});

Onaj event.preventDefault(); ti ne treba. A ako ga bas iz nekoga razloga zelis staviti, mada nece utjecati na nista, onda moras u ready funkciju staviti event, odnosno:

$(document).ready(function(event){
bla
});

Aleksandar / 14.01.2015. 19:22

misliš nešto ovako:

HTML:

<html>
<body>
<p id="a">1</p>
<p id="b">2</p>
<p id="v">3</p>
<style type="text/css">
#a, #b, #v {
display: none;
}
</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var id_a = $("#a");
var id_b = $("#b");
var id_v = $("#v);
id_a.innerHTML = "<div>prvi tekst</div>";
id_b.innerHTML = "<div>drugi tekst</div>";
id_v.innerHTML = "<div>treci tekst</div>";
$("#a, #b, #v").css({
"display": "block";
});
});
</script>
</body>
</html>

Sada se prikazuje potpuno prazna stranica, bijela. Nema ništa .

drazac 14.01.2015. 20:17

Ovisno o tome jeli ukljucen jquery ce ili radit ili ne. Ja sam pretpostavio da si ga includao u head tag, no ako nisi onda ovako:

umjesto

Code:

var id_a = $("#a");
var id_b = $("#b");
var id_v = $("#v);
id_a.innerHTML = "
prvi tekst
";
id_b.innerHTML = "
drugi tekst
";
id_v.innerHTML = "
treci tekst
";
$("#a, #b, #v").css({
"display": "block";
});
});

stavi

Code:

var id_a = document.getElementById("a");
var id_b = document.getElementById("b");
var id_v = document.getElementById("v");
id_a.innerHTML = "
prvi tekst
";
id_b.innerHTML = "
drugi tekst
";
id_v.innerHTML = "
treci tekst
";
id_a.style.display = "block";
id_b.style.display = "block";
id_v.style.display = "block";
});

Razlog zasto ti se nista ne vidi jest sto se ucitao css i sakrio elemente, a prilikom izvrsavanja scripte je doslo do greske (vjerojatno nije ukljucen jquery) pa se naredbe koju su eksluzivne za jQuery se nisu mogle izvrsiti.

Probaj sada


Sva vremena su GMT +2. Sada je 04:41.

Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger