2014-05-15 7 views
5

Ho la seguente funzione che dovrebbe produrre un risultato per divs denominati "totalPrice" e "premPrice", tuttavia .innerhtml non sembra posizionare i numeri nel div per qualche motivo? Puoi forse dare un'occhiata a questo pezzo di codice e dirmi i possibili motivi per cui non sta inserendo l'html? Dal momento che sono più recente nei linguaggi web, devi chiamare la funzione? o quando lo definisco semplicemente è la funzione chiamata?.innerhtml non sta inserendo il contenuto in "DIV"

html:

  <label class='next action-button'><input type="button" name="tank" value="Yes" onclick="calculateTotal()" />Yes</label><br/> 
<p>standard and premium system specs</p> 
    <br/> 
       <div id="totalPrice"></div> 
       <br/> 
       <div id="premPrice"></div> 

js:

function calculateTotal() 
{ 

    var boilerPrice = getBoilerSizePrice() + getBedroomSizePrice() + getBathroomSizePrice() + getTankSizePrice() ; 

    //display the result 
    var divobj = document.getElementById('totalPrice'); 
    divobj.style.display='block'; 
    divobj.innerHTML = "Your New Boiler Install Price is £"+boilerPrice; 

    var divobj = document.getElementById('premPrice'); 
    divobj.style.display='block'; 
    divobj.innerHTML = "Premium price £"+((boilerPrice/100)*120); 

} 
+0

HTML per favore?! –

+0

Devi chiamare la funzione. Se ogni funzione definita è stata chiamata automaticamente quando la pagina è stata caricata, ci sarebbero problemi ... – shadowfox

+0

devi chiamare la funzione come calculateTotal() –

risposta

5

Dopo aver scritto una funzione, è necessario chiamare da qualche parte. Dopo la staffa della funzione di chiusura, cercando di chiamare in questo modo:

function calculateTotal() 
{ 

    var boilerPrice = getBoilerSizePrice() + getBedroomSizePrice() + getBathroomSizePrice() + getTankSizePrice() ; 

    //display the result 
    var divobj = document.getElementById('totalPrice'); 
    divobj.style.display='block'; 
    divobj.innerHTML = "Your New Boiler Install Price is £"+boilerPrice; 

    var divobj = document.getElementById('premPrice'); 
    divobj.style.display='block'; 
    divobj.innerHTML = "Premium price £"+((boilerPrice/100)*120); 

} 

calculateTotal(); 

Edit: Sulla base della sua intenzione aggiornato per chiamare la funzione click, vorrei far notare che è considerato bad practice chiamare funzioni JavaScript in linea, e potrebbe darti dei problemi in alcuni casi. Un altro modo per farlo è associare l'evento click all'elemento target nel codice JavaScript. Ecco un jsfiddle usando il tuo codice.

Fondamentalmente, ho rimosso il onclick="calculateTotal()" dal bottone e dato un ID:

<input id="calc-button" type="button" name="tank" value="Yes" /> 

Poi ho aggiunto la seguente riga al JavaScript: codice

document.getElementById("calc-button").addEventListener("click", calculateTotal); 
+0

grazie per la risposta, ho aggiornato il mio HTML sopra per riflettere su come sto chiamando calculateTotal() onclick. è questo il modo corretto di farlo? – user3641959

+0

Sì, sembra giusto. Se ancora non funziona, potrebbe essere utile copiare tutto il codice in [jsfiddle] (http://jsfiddle.net/) per dimostrare il problema. – Kylok

+0

Ho aggiornato la mia risposta per includere alcuni consigli su come allegare eventi e un [esempio jsfiddle] (http://jsfiddle.net/988WT/3/). – Kylok

Problemi correlati