Newsgroup: it.comp.lang.javascript
Titolo: document.getElementById

Salve,
per favore qualcuno sa dirmi perchè ottengo null dal codice allegato?
Grazie, cordiali saluti
--
Enos
********** index.html **********
[...]
        <script type="text/javascript" src="disc-over.js"></script>
[...]
            <div class="game" id="field">
                <div id="cover"></div>
            </div>
[...]
******************************
********** JAVASCRIPT **********
function getIDs() {
[...]
    field = document.getElementById("field");
[...]
    window.alert(field);
}
[...]
function initialize() {
    getIDs();
[...]
}
document.addEventListener("load", initialize, true);
******************************

 Grazie, cordiali saluti
A me pare giusto, l'unica cosa � sapere dov'� il tag "script" in quel 
momento (visto che hai zappato praticamente tutti i file).
Firefox + Firebug sono un ottimo strumento per il debugging.
Enrico

 Firefox + Firebug sono un ottimo strumento per il debugging.
Li sto usando. Firebug indica che l'ID del <div> e' effettivamente
<field> e che non ci sono errori JavaScript. L'HTML è valido.
Copioincollo tutto.
--
Enos
********** index.html **********
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;
charset=utf-8">
        <title>Disc-Over GAME</title>
        <meta name="author" content="Enos">
        <meta name="created" content="20090714;18413100">
        <meta name="changed" content="20090717;8144200">
        <link rel="stylesheet" type="text/css" href="../../../common/
reset.css">
        <link rel="stylesheet" type="text/css" href="disc-over.css">
        <script type="text/javascript" src="disc-over.js"></script>
    </head>
    <body lang="EN">
        <div id="header">
            <h1>Disc-Over</h1>
            <h2><a href="../../index.html">Home</a> &gt; <a href="../
index.html">Games</a> &gt; Disc-Over</h2>
        </div>
        <div class="game" id="game">
            <div class="game" id="field">
                <div id="cover"></div>
            </div>
            <div class="game" id="score"></div>
        </div>
    <script type="text/javascript">
window.alert("patapum");
    </script>
    </body>
</html>
********** disc-over.js **********
function getIDs() {
    game = document.getElementById("game");
    field = document.getElementById("field");
    score = document.getElementById("score");
    window.alert(field);
}
var actor = new Array();
var actors = 0;
function Actor() {
    this.number = actors++;
    this.speed = Math.random() * 10;
    image = document.createElement("img");
    image.style.display = "absolute";
    image.style.top = "10px"
    image.style.left = "10px";
    image.setAttribute("src", "images/vista.gif");
    pos_x = Math.floor( Math.random() * 300 );
    pos_y = Math.floor( Math.random() * 400 );
}
function initialize() {
    getIDs();
    for (var i=0; i<10; i++) {
        actor[i] = new Actor();
    }
}
document.addEventListener("load", initialize, true);
********** disc-over.css ***********
#header {
    background-color:silver;
    color:white;
    font-family:sans-serif;
    text-transform:uppercase;
}
h1 {
    display:block;
    padding-left:8px;
    font-size:3em;
}
h2 {
    display:block;
    padding-left:12px;
    background-color:gray;
    color:#dfdfdf;
    font-weight:bold;
}
#header h2 a {
    color:#dfdfdf;
    text-decoration:none;
}
#header h2 a:hover {
    font-weight:bold;
    color:white;
}
.game {
    border:1px solid black;
    overflow:hidden;
}
#game {
    margin: 20px auto;
    position:relative;
    height:402px;
    width:404px;
}
#field {
    height:400px;
    width:300px;
    position:absolute;
    top:0;
    left:0;
    background:url(images/background0.jpg);
}
#cover {
    height:400px;
    width:300px;
    background-color:black;
}
#score {
    height:400px;
    width:100px;
    position:absolute;
    top:0px;
    left:302px;
}

 Grazie, cordiali saluti
Forse field e' una parola riservata?

 Forse field e' una parola riservata?
Grazie della risposta, ma non e' quello il problema, il comportamento
e' lo stesso anche con gli altri ID.
Qualcuno potrebbe per favore provare quel codice nel suo pc?
--
Enos

 document.addEventListener("load", initialize, true); 
a me con document ignora totalmente lo script, usando invece l'oggetto 
window tutto ok.

 window tutto ok.
Grazie! Usando window.addEventListener funziona tutto.
Con document a me non ignorava lo script (FF 3.0.11 su Ubuntu 9.04
64bit),
lo eseguiva alla fine, ma si vede che il DOM non era ancora pronto.
Grazie a tutti quelli che hanno considerato il problema e specialmente
a te che lo hai risolto.
--
Enos

 lo eseguiva alla fine, ma si vede che il DOM non era ancora pronto.
stranissimo: anch'io su Ubuntu ... boh.

 stranissimo: anch'io su Ubuntu ... boh.
Grazie al tuo consiglio ho poi finito il mio primo giochino
JavaScript:
http://enos.altervista.org/en/games/run/
 (FF only)
--
Enos

 
http://enos.altervista.org/en/games/run/
 (FF only)
simpatico! (un po' troppo difficile ...)

 simpatico! (un po' troppo difficile ...)
Grazie.
Ma non è tanto difficile, guadagna il centro e poi diventa più facile.
Sto riscrivendo l'originale con tecniche OO. Sono particolarmente
fiero della bassa occupazione di CPU. Tutti gli altri giochi JS che ho
visto occupano il 100% di un processore. Anche JQuery occupa il 100%
quando ridimensiona div, assurdo!
Ciao
--
Enos


wrote:

il gioco è carino.
un suggerimento:
se puoi, abilita i tasti cursore per la navigazione.
ciao
sam---

 se puoi, abilita i tasti cursore per la navigazione.
Fatto!
Ho abilitato le frecce e già che c'ero anche le direzioni diagonali.
Però così diventava facile, allora faccio apparire un nuovo nemico
ogni dieci secondi :-)
--
Enos

Sam -- wrote:

te possino .....
ciao sam--

 te possino .....
Sai che ti dico? Hai ragione, era meglio senza nuovi nemici.
Meno frenetico, ma più rilassante. Una specie di solitario.
E poi, tanto, arriva il momento che il caso ti fa arrivare addosso il
mondo contemporaneamente e non c'è via di scampo.
Naturalmente la mia decisione non ha nulla a che vedere con il fatto
che lo avevo programmato così male, ma così male, che non riuscivo a
fare apparire nuovi nemici senza poi lasciarmi dietro div invisibili e
porcheria varia negli array ad ogni nuova partita ;-)
Reinizializzare tutto ogni volta non mi pareva elegante, al contrario
adattare il gameplay alle difficoltà tecniche fa molto anni 80.
Ciao
--
Enos

 
http://enos.altervista.org/en/games/run/
 (FF only)
Va tranquillamente anche su Safari 4, se ti pu� interessare. :)
Ma se non ti interessa scrivere codice crossbrowser, soprattutto non ti
interessa che giri su IE, usa l'elemento canvas che � decisamente molto
pi� indicato per fare questo genere di cose.
Non siamo pi� negli anni 90, per fortuna. :)
P.S.
Visto che badi al "consumo di CPU", se rimani focalizzato su codice non
crossbrowser ma "FF Only", puoi approfittare del fatto che tale browser
supporta i Web Workers, e usarli. Sono supportati anche da Chrome e dai
browser con Google Gears installato (giusto per completezza).
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."

 [...] Web Workers  [...]
Non li conosco, indagherò.
Ciao
--
Enos





Dimmi se capisco bene, si tratta di thread?
Interessante che corrispondano a thread "veri", e che se scaricati dal
WEB, vengano giustamente "simulati" in una sandbox. Darebbero si
un'impronta più object-oriented alla struttura di un gioco, ma il
prezzo da pagare in termini di compatibilità sarebbe ancora troppo
alto.
Giorni fa ascoltavo una illuminante conferenza Google di Douglas
Crockford, in cui accennava al fatto che per l'uso per cui è pensato
JS, non si sente la mancanza dei Thread:
http://tinyurl.com/n5skmb
I tuoi spunti sono stati molto interessanti, e la segnalazione di GAE
preziosissima - ti ringrazio molto.
Ciao,
--
Enos

 preziosissima - ti ringrazio molto.
De nada, alla prossima.


 è "mono browser" :)
Va bene, questi tuoi rimproveri ricorrenti me li sono meritati, ma
sfatiamo questo mito: l'avevo scritto per divertimento e per fare
pratica. Un sito di produzione non lo scrivo FF only! :-)
Ancora, grazie.
Ciao
--
Enos

 Ancora, grazie.
De nada, siam qui apposta.
