DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   (X)HTML, JavaScript, DHTML, XML, CSS (http://www.devprotalk.com/forumdisplay.php?f=8)
-   -   Java Script bug u FF zbog doctype-a! (http://www.devprotalk.com/showthread.php?t=1993)

flash_back 07. 12. 2006. 19:19

Java Script bug u FF zbog doctype-a!
 
Jurim neko parce koda koje bi na odredjenu selektovanu opciju iz menia ispisalo odredjen sadrzaj.. I nadjem takvo parce koda..

Kôd:

<html>
<head>
<script language="javascript">
function showhide(checkval){
var colData = "Here is my hidden text.";
if (document.layers){
document.layers['mylayer'].document.open();
document.layers['mylayer'].document.write("<form name='mylayer'>");
document.layers['mylayer'].document.write(colData);
document.layers['mylayer'].document.write("</form>");
document.layers['mylayer'].document.close();
document.layers['mylayer'].visibility=(checkval=="hide") ? 'hide' : "show";
}
else{
document.all['mylayer'].style.visibility=(checkval=="hide") ? 'hidden' :"visible";
document.all.mylayer.innerHTML = colData;
}
}
</script>
</head>
<body>
<form>
<select name="myfield" onChange="showhide(this[this.selectedIndex].text);">
<option>hide</option>
<option>show</option>
</select>
</form>
<div id='mylayer' style="position:absolute;left:10px;top:500px">&nbsp;</div>
</body>
</html>

Konkretno script mi treba za kontakt stranu za rd sajt. Poenta je da imam par kontakt opcija [izrada sajta, graficki design, pitanja i sl.] za koje ce da se ispisuje drugaciji raspored polja..

Problem nastaje kada se script pokrene u FireFoxu. Licno, ovo mi se prvi put dogadja da neka stvar radi ok u Operi i I.E. a da ne radi u FF-u! Navikao sam se da Imbecil E. bude ta crna ovcica, al' eto i ovo da se dogodi.. :)

U pocetku nisam znao u cemu je problem, bilo je malo konfuzno jer scripta radi kada napravim novu stranu sa prikazanim kodom, ali ne i kada ubacim potrebne delove u kontakt stranicu. Malo sam cistio dokument i ispostavi se da je problem 'ladno u samom tipu dokumenta.

Kôd:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Isto je i sa [X]HTML Strict.. i svim mogucim varijantama. Script radi jedino bez doctype-a..

Stvarno svasta :) Neki predlozi za izmenu scripta? Ono 'innerHTML' mi izgleda sumljivo?

noviKorisnik 07. 12. 2006. 19:29

Rekao bih da je document.layers - umesto toga može po DOM-u document.getElementById ...

dee 07. 12. 2006. 19:34

Citat:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script language="javascript">
function showhide(checkval){
var colData = "Here is my hidden text.";
if (document.layers){
document.layers['mylayer'].document.open();
document.layers['mylayer'].document.write("<form name='mylayer'>");
document.layers['mylayer'].document.write(colData);
document.layers['mylayer'].document.write("</form>");
document.layers['mylayer'].document.close();
document.layers['mylayer'].visibility=(checkval=="hide") ? 'hide' : "show";
}
else{
document.getElementById('mylayer').style.visibility=(checkval=="hide") ? 'hidden' :"visible";
document.getElementById('mylayer').innerHTML = colData;
}
}
</script>
</head>
<body>
<form>
<select name="myfield" onChange="showhide(this[this.selectedIndex].text);">
<option>hide</option>
<option>show</option>
</select>
</form>
<div id='mylayer' style="position:absolute;left:10px;top:500px">&nbs p;</div>
</body>
</html>
sad radi

edit: eo me js guru preduhitrio :)

flash_back 07. 12. 2006. 19:59

Hvala ljudi :) ovo je bilo bas quicky ;)

poz i tnx X2 :)

flash_back 07. 12. 2006. 22:12

Moram da pipnem kod pa to mu je :)
 
Ajd dok sam tu kod vas js gurua da iskoristim priliku.

E ovako, malo sam 'suzio' kod (ako nije ok recite) i promenio sa visibility:hiden na display:none. I vise 'ne jurim' text opcije vec id, prakticnije je.

Kôd:

<script language="javascript">
function showhide(checkval){
var colData = "1";
var colData2 = "2";

if (checkval==1){
document.getElementById("mylayer").style.display=(checkval=="hide") ? "none" :"block";
document.getElementById("mylayer").innerHTML = colData;
}
else if (checkval==2){
document.getElementById("mylayer").style.display=(checkval=="hide") ? "none" :"block";
document.getElementById("mylayer").innerHTML = colData2;
}
else {
document.getElementById("mylayer").style.display=(checkval=="hide") ? "none" :"block";
document.getElementById("mylayer").innerHTML = colData2;
}
}
</script>
<form>
<select name="myfield" onchange="showhide(this[this.selectedIndex].id);">
<option id="hide">hide</option>
<option id="1">show</option>
<option id="2">show2</option>
</select>
</form>

^ Ovo iznad 'sljaka', al neznas sto ovo nece:?

Kôd:

<script language="javascript">
function showhide(checkval){


var colData1 = "1";
var colData2 = "2";

var nesto = "colData" + checkval;

document.getElementById("mylayer").style.display=(checkval=="hide") ? "none" :"block";
document.getElementById("mylayer").innerHTML = nesto;

}
</script>
<form>
<select name="myfield" onchange="showhide(this[this.selectedIndex].id);">
<option id="hide">hide</option>
<option id="1">show</option>
<option id="2">show2</option>
</select>
</form>


MorenoArdohain 07. 12. 2006. 22:22

Radi ti i taj drugi kod, nije me mrzelo da proverim.
Samo, text se prikazuje u dnu strane (posto si stavio position 500px od vrha strane).

flash_back 07. 12. 2006. 23:20

Mislim radi kod, al ne ono sto bi ja zeleo.

Na selectovanje npr: show2 on bi trebao da printa '2' a ne 'colData2'.. Nesto ja tu neumem da sabiram :)

MorenoArdohain 07. 12. 2006. 23:24

Promeni
Kôd:

var nesto = "colData" + checkval;
u
Kôd:

var nesto = checkval;

flash_back 07. 12. 2006. 23:31

Hehe :) vidim od oka, printace to 'ok' vrednost.. ali ok jer je id i vrednost za isti ista ;)

MorenoArdohain 07. 12. 2006. 23:36

Ah, moze i tako, ali ako hoces da dodelis neki text za svaku opciju, onda izmeni da bude ovako:

Kôd:

var colData = new Array();
colData[1] = "poruka 1";
colData[2] = "poruka 2";

var nesto = colData[checkval];



Vreme je GMT +2. Trenutno vreme je 01:44.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.