Vra

Ek het 'n absoluut geposisioneer div wat ek wil om te wys wanneer die gebruiker 'n skakel klik. Die onclick van die skakel noem 'n JS funksie wat die vertoning van die div te sluit stel (ook probeer: "", inline, table-cell, inline-table, ens). Dit werk baie goed in IE7, glad nie in elke ander leser Ek het probeer (FF2, FF3, Opera 9.5, Safari).

Ek het probeer om die toevoeging van waarskuwings voor en na die oproep, en hulle wys dat die vertoning van none verander na block maar die div nie vertoon.

Ek kan die div kry om te vertoon in FF3 as ek die vertoning waarde met behulp van Firebug se HTML inspekteur verander (maar nie deur die loop JavaScript deur konsole Firebug se) -. So ek weet dit is nie net vertoon af skerm, ens

Ek het alles wat ek kan dink, insluitend probeer:

  • Die gebruik van 'n ander DOCTYPE (XHTML 1, HTML 4, ens)
  • Die gebruik van sigbaarheid sigbaar / versteek in plaas van mekaar blok / geen
  • Die gebruik van inline JavaScript in plaas van 'n funksie oproep
  • Toets van verskillende masjiene

Enige idees oor wat dit kan veroorsaak?

Was dit nuttig?

Oplossing 2

Sedert die oprigting van die eiendomme met javascript nooit was om te werk, maar die opstel van die gebruik van Firebug se inspekteer het, het ek begin om te vermoed dat die javascript ID selector is afgebreek - miskien was daar verskeie items in die DOM met dieselfde ID? Die bron het nie wys dat daar, maar herhaling deur al divs met behulp van JavaScript Ek het gevind dat dit die geval was. Hier is die funksie Ek het uiteindelik met behulp van die pop-up wys:

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';        
    }
  }
}

(nutsfunksie getObjectsByTagAndClass nie gelys)

Die ideaal sal ek uitvind hoekom dieselfde item word meer as een keer plaas, maar ek het nie beheer oor die lewering platform, net sy insette het.

Toe debugging kwessies soos hierdie, onthou om te kyk vir dubbele-ID's in die DOM, wat kan breek getElementById .

Aan almal wat beantwoord, dankie vir jou hulp!

Ander wenke

Kan jy 'n mate van opmaak dat die fout te reproduseer? Jou situasie moet iets te doen met jou kode het sedert ek dit kan kry om te werk op Internet Explorer, FF3 en Opera 9.5:

function show() {
  var d = document.getElementById('testdiv');
  d.style.display = 'block';
}
#testdiv {
  position: absolute;
  height: 20px;
  width: 20px; 
  display: none;
  background-color: red;
}
<div id="testdiv"></div>
<a href="javascript:show();">Click me</a>

Resultate die antwoord: Ek nodig het om die volgende te gebruik om dit te laat werk op beide blaaiers:

document.getElementById('editRow').style.display = '';

Eintlik het ek ondervind dieselfde probleem wat jy hier beskryf. Wat eintlik vaste my probleem was die verandering van die dokument eienskappe.

Old DOCTYPE / html spec

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

Vervang met

<html>

Gaan die fout konsole (Menu Tools> Fout Console in Firefox 3) om seker te maak dat daar nie 'n ander fout gebeur dat jy nie sien, wat stop jou script uit te werk.

Jy kan probeer om die lengte en breedte van die div, en maak seker dit is op die top van die opstel van sy z-indeks hoër as al die ander. As die absoluut geposisioneer div is binne 'n element wat relatief is geposisioneer, dit is bo-op en links plek is gebaseer af die top en links van die relatief geposisioneer element. Probeer om jou div net minder as die liggaam element.

Jy moet 'n window.onload metode skryf:

window.onload = document.getElementById('testdiv').style.display='inline';

Of jy kan ook 'n veranderlike te maak:

var d = document.getElementById('testdiv');
window.onload = d.style.display = 'inline';

Daar is 'n irriterende vertoon fout op Firefox 3.5, maar nie op IE7 of Firefox 2.0.9

Ek het 3 posisie DIV se absolute - die eerste met plain text; die tweede met 'n CSS spyskaart (sucklefish tipe met UL en LI) en die derde ditto. Die derde sal glad nie vertoon selfs al is die kodering is nagegaan en gevind perfek te wees met W3C se HTML Validator.

As 'n tydelike maatreël, ek het die tweede en derde DIV se inhoud saamgesmelt.

Dinge moet sleg wees by Mozilla wanneer IE7 en FF2 vertoning OK maar nie VF 3.5

Ek sal jou 'n groot wenk gee:

<div style="..." class="..."> ... </div>

As jy iets het in styl, dan document.style sal werk! As jy iets in die klas het, sal dit nie wys in document.style en class = "..." sal dit ignoreer!

Dink hieroor en dit sal opklaar so baie probleme. Net hierdie een bietjie begrip sal jy ontslae van hierdie gesindheid virus. Lekker dag. Cheers, Ron Lentjes, LC CLS.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top