Am un div
absolut poziționat pe care vreau să îl afișez când utilizatorul dă clic pe un link. Codul onclick
al legăturii apelează o funcție js care afișează afișarea divului la bloc (încercat: "", inline
, celulă de tabelă
, inline-table
, etc.). Acest lucru funcționează excelent în IE7, deloc în toate celelalte browsere pe care le-am încercat (FF2, FF3, Opera 9.5, Safari).
Am încercat adăugarea de alerte înainte și după apel și arată că afișarea sa schimbat de la none
la block
, dar div
afişa.
Pot sa-l afis pe div
pentru a fi afisat in FF3 daca schimba valoarea afisata folosind inspectorul HTML Firebug (dar nu prin rularea javascript prin intermediul consolei Firebug) - asa ca stiu ca nu se arata doar off-screen etc.
Am încercat tot ce mă pot gândi, inclusiv:
Orice idei despre ce ar putea cauza asta?
Puteți oferi o marcare care reproduce eroarea? Situația dvs. trebuie să aibă legătură cu codul dvs., deoarece pot obține acest lucru pentru a lucra la IE, FF3 și Opera 9.5:
funcția arată () {
var d = document.getElementById ('testdiv');
d.style.display = 'bloc';
}
#testdiv {
poziția: absolută;
înălțime: 20px;
lățime: 20px;
afișare: niciunul;
fundal-culoare: roșu;
}
Încercați să setați înălțimea și lățimea divului și asigurați-vă că acesta este în partea superioară, stabilind indexul său z mai mare decât orice altceva. Dacă div poziția absolută este în interiorul unui element relativ poziționat, locația de sus și de stânga se bazează pe partea superioară și pe partea stângă a elementului relativ poziționat. Încercați să vă puneți divultura sub elementul corpului.
Deoarece setarea proprietăților cu javascript nu părea să funcționeze, dar setarea utilizând inspectarea Firebug a făcut-o, am început să bănuiesc că selectorul de javascript ID a fost spart - poate că au existat mai multe elemente în DOM cu același ID? Sursa nu a arătat că au existat, dar prin looping prin toate divs folosind javascript am constatat că acesta este cazul. Iată funcția pe care am terminat-o pentru a afișa pop-ul:
function openPopup(popupID)
{
var divs = getObjectsByTagAndClass('div','popupDiv');
if (divs != undefined && divs != null)
{
for (var i = 0; i < divs.length; i++)
{
if (divs[i].id == popupID)
divs[i].style.display = 'block';
}
}
}
(funcția utilitate getObjectsByTagAndClass nu este listată)
În mod ideal, voi afla de ce același element este inserat de mai multe ori, dar nu am control asupra platformei de redare, ci doar intrările sale.
Deci, atunci când depanem astfel de probleme, nu uitați să verificați ID-urile duplicate din DOM, care pot rupe getElementById .
Pentru toți cei care au răspuns, mulțumesc pentru ajutor!
Există o eroare de afișare enervantă pe Firefox 3.5, dar nu pe IE7 sau Firefox 2.0.9
Am poziția absolută a lui DIV - prima cu text simplu; al doilea cu un meniu CSS (tip sucklefish cu UL și LI) și al treilea ditto. Al treilea nu va afișa deloc, chiar dacă codificarea a fost verificată și sa dovedit a fi perfectă cu validatorul HTML al W3C.
Ca măsură temporară, am combinat conținutul celui de-al doilea și celui de-al treilea DIV.
Lucrurile trebuie să fie rău la Mozilla atunci când IE7 și FF2 afișează OK dar nu FF 3.5
De fapt, am fost confruntat cu aceeași problemă pe care o descrieți aici. Ceea ce a rezolvat problema mea a fost schimbarea proprietăților documentului.
vechi DOCTYPE/html spec
Înlocuit cu
Trebuie să scrieți o metodă window.onload
:
window.onload = document.getElementById('testdiv').style.display='inline';
Sau puteți face și o variabilă:
var d = document.getElementById('testdiv');
window.onload = d.style.display = 'inline';
Vă dau un indiciu BIG:
...
Dacă aveți ceva în stil, atunci document.style va funcționa! Dacă ai ceva în clasă, nu se va afișa în document.style și clasa = "..." o va suprascrie!
Gândiți-vă la acest lucru și acest lucru va clarifica atât de multe aspecte. Doar această înțelegere ușoară vă va rida de acest VIRUS MIND. Să aveţi o zi bună. Noroc, Ron Lentjes, LC CLS.