Ik heb JavaScript-code en de onderstaande regel heeft een probleem.
if ((hr==20)) document.write("Good Night"); document.getElementById('Night).style.display=''
FOUT
Uncaught TypeError: Cannot read property 'style' of null at Column 69
Mijn div-taggegevens zijn:
<div id="Night" style="display: none;">
<img src="Img/night.png" style="position: fixed; top: 0px; left: 5%; height: auto; width: 100%; z-index: -2147483640;">
<img src="Img/moon.gif" style="position: fixed; top: 0px; left: 5%; height: 100%; width: auto; z-index: -2147483639;"></div>
Vul JavaScript in:
<script language="JavaScript">
<!--
document.write("<dl><dd>")
day = new Date()
hr = day.getHours()
if ((hr==1)||(hr==2)||(hr==3)||(hr==4) || (hr==5)) document.write("Should not you be sleeping?")
if ((hr==6) || (hr==7) || (hr==8) || (hr==9) || (hr==10) || (hr==11)) document.write("Good Morning!")
if ((hr==12)) document.write("Let's have lunch?")
if ((hr==13) || (hr==14) || (hr==15) || (hr==16) || (hr==17)) document.write("Good afternoon!")
if ((hr==18) || (hr==19)) document.write("Good late afternoon!")
if ((hr==20)) document.write("Good Night"); document.getElementById('Night').style.display=''
if ((hr==21)) document.write("Good Night"); document.getElementById('Night').style.display='none'
if ((hr==22)) document.write("Good Night")
if (hr==23) document.write("Oh My! It's almost midnight!")
if (hr==0) document.write("Midnight!<br>It is already tomorrow!") document.write("</dl>")
//--->
</script>
Kan iemand me helpen?
Antwoord 1, autoriteit 100%
In je script, dit deel:
document.getElementById('Noite')
moet null
retourneren en u probeert ook de eigenschap display
in te stellen op een ongeldige waarde. Er zijn een aantal mogelijke redenen waarom dit eerste deel null
is.
-
U voert het script te vroeg uit voordat het document is geladen en daarom kan het item
Noite
niet worden gevonden. -
Er is geen
Noite
item in je HTML.
Ik moet erop wijzen dat uw gebruik van document.write()
in dit geval code waarschijnlijk een probleem betekent. Als het document al is geladen, zal een nieuwe document.write()
de oude inhoud wissen en een nieuw vers document starten, zodat er geen Noite
item wordt gevonden.
Als uw document nog niet is geladen en u dus document.write()
inline doet om HTML inline aan het huidige document toe te voegen, dan is uw document nog niet volledig geladen, dus dat is waarschijnlijk waarom het het item Noite
niet kan vinden.
De oplossing is waarschijnlijk om dit deel van je script helemaal aan het einde van je document te plaatsen, zodat alles voordat het al is geladen. Dus verplaats dit naar het uiteinde van je lichaam:
document.getElementById('Noite').style.display='block';
En zorg ervoor dat er geen document.write()
-instructies in javascript zijn nadat het document is geladen (omdat ze het vorige document zullen wissen en een nieuwe zullen starten).
Bovendien heeft het voor mij geen zin om de eigenschap display
in te stellen op "display"
. De geldige opties daarvoor zijn "block"
, "inline"
, "none"
, "table"
, enz… Ik ken geen optie met de naam "display"
voor die stijleigenschap. Zie hiervoor geldige opties voor de display
eigenschap.
Je kunt de vaste code hier in deze demo zien werken: http://jsfiddle.net/jfriend00/yVJY4 /. Die jsFiddle is zo geconfigureerd dat het javascript aan het einde van de hoofdtekst van het document wordt geplaatst, zodat het wordt uitgevoerd nadat het document is geladen.
P.S. Ik moet erop wijzen dat uw gebrek aan accolades voor uw if
-instructies en uw opname van meerdere instructies op dezelfde regel uw code erg misleidend en onduidelijk maakt.
Ik vind het heel moeilijk om erachter te komen wat je vraagt, maar hier is een opgeschoonde versie van je code die werkt en die je ook hier kunt zien werken: http://jsfiddle.net/jfriend00/QCxwr/. Hier is een lijst van de wijzigingen die ik heb aangebracht:
- Het script bevindt zich in de body, maar achter de inhoud waarnaar het verwijst.
- Ik heb
var
-declaraties aan je variabelen toegevoegd (een goede gewoonte om altijd te gebruiken). - De
if
-instructie is veranderd in een if/else, wat een stuk efficiënter is en meer zelfdocumenteert over wat u aan het doen bent. - Ik heb beugels voor elke
if
verklaring, dus het is absoluut duidelijk welke verklaringen deel uitmaken van deif/else
en dat niet. - Ik heb de
</dd>
Tag die u invoerde. - Ik heb
style.display = '';
naarstyle.display = 'block';
. - Ik heb puntkomma’s aan het einde van elke verklaring toegevoegd (een andere goede gewoonte om te volgen).
De code:
<div id="Night" style="display: none;">
<img src="Img/night.png" style="position: fixed; top: 0px; left: 5%; height: auto; width: 100%; z-index: -2147483640;">
<img src="Img/moon.gif" style="position: fixed; top: 0px; left: 5%; height: 100%; width: auto; z-index: -2147483639;">
</div>
<script>
document.write("<dl><dd>");
var day = new Date();
var hr = day.getHours();
if (hr == 0) {
document.write("Meia-noite!<br>Já é amanhã!");
} else if (hr <=5 ) {
document.write(" Você não<br> devia<br> estar<br>dormindo?");
} else if (hr <= 11) {
document.write("Bom dia!");
} else if (hr == 12) {
document.write(" Vamos<br> almoçar?");
} else if (hr <= 17) {
document.write("Boa Tarde");
} else if (hr <= 19) {
document.write(" Bom final<br> de tarde!");
} else if (hr == 20) {
document.write(" Boa Noite");
document.getElementById('Noite').style.display='block';
} else if (hr == 21) {
document.write(" Boa Noite");
document.getElementById('Noite').style.display='none';
} else if (hr == 22) {
document.write(" Boa Noite");
} else if (hr == 23) {
document.write("Ó Meu! Já é quase meia-noite!");
}
document.write("</dl></dd>");
</script>
Antwoord 2, Autoriteit 5%
Dit gebeurt omdat document.write
zou uw bestaande code overschrijven, plaats daarom uw div
vóór uw JavaScript-code. b.v.:
CSS:
#mydiv {
visibility:hidden;
}
In uw HTML-bestand
<div id="mydiv">
<p>Hello world</p>
</div>
<script type="text/javascript">
document.getElementById('mydiv').style.visibility='visible';
</script>
Ik hoop dat dit nuttig was
Antwoord 3, Autoriteit 2%
Je mist je ‘s nachts’.
Hier GetelementByID (‘Night
Antwoord 4
Voor mij was mijn script-tag buiten het lichaamselement. Gekopieerd het vlak voor het sluiten van het lichaamstag. Dit werkte
enter code here
<h1 id = 'title'>Black Jack</h1>
<h4> by Meg</h4>
<p id="text-area">Welcome to blackJack!</p>
<button id="new-button">New Game</button>
<button id="hitbtn">Hit!</button>
<button id="staybtn">Stay</button>
<script src="script.js"></script>
Antwoord 5
Ik denk gewoon dat u een enkele offerte in uw code mist
if ((hr==20)) document.write("Good Night"); document.getElementById('Night"here").style.display=''
het zou zo moeten zijn
if ((hr==20)) document.write("Good Night"); document.getElementById('Night').style.display=''
Antwoord 6
Ik heb hetzelfde probleem ondervonden, de situatie is dat ik flash-game moet downloaden via embed-tag en H5-game per iframe, ik heb daar een laadbox nodig, als de flash- of H5-download klaar is, laat de laadbox er geen weergeven. wel, de flitser werkt goed, maar wanneer dingen naar iframe gaan, kan ik de eigenschap ‘stijl’ van null niet vinden, dus ik voeg er een klok aan toe en het werkt
let clock = setInterval(() => {
clearInterval(clock)
clock = null
document.getElementById('loading-box').style.display = 'none'
}, 200)