2016-01-20 125 views
0

我正在嘗試一些考試的東西,我不能讓它工作。這很簡單,我不明白爲什麼不工作。innerHTML不打印任何東西

<!DOCTYPE html> 
<html> 
<head> 
    <title>Exercici 2</title> 
    <script type="text/javascript"> 
     //rep 2 paràmetres d'entrada i els suma 
     function suma(a, b) { 
      alert(arguments.length); 
      //donaria undefined, ja que no existeix el argument amb índex 2, tindria que ser [1] 
      alert(arguments[2]); 
      //3 + 5 = 8 
      return a + b; 
     } 

     var result = suma(3,5); 
     document.getElementById("result").innerHTML += "<strong>Suma</strong>: 3 + 5 = " + result + "<br>"; 
    </script> 
</head> 
<body> 
    <div id="result"> 
    </div> 
</body> 
</html> 

我知道alert(arguments[2]);將顯示未定義。

+1

腳本應放置後'DIV ID =「結果」'元素 –

+2

在你的情況,這就是爲什麼錯誤。 ..否則你需要使用'onload'事件 –

+0

window.onload事件將不可用,直到呈現每個元素。如果你有很多或大的圖片或視頻,那就不太好。 – nocturns2

回答

3

問題是您在DOM呈現之前調用函數。所以result不可用。正文後移動腳本。

<html> 
 

 
<head> 
 
    <title>Exercici 2</title> 
 

 
</head> 
 

 
<body> 
 
    <div id="result"> 
 
    </div> 
 
</body> 
 

 
<script type="text/javascript"> 
 
    //rep 2 paràmetres d'entrada i els suma 
 
    function suma(a, b) { 
 
    //3 + 5 = 8 
 
    return a + b; 
 
    } 
 

 
    var result = suma(3, 5); 
 
    document.getElementById("result").innerHTML += "<strong>Suma</strong>: 3 + 5 = " + result + "<br>"; 
 
</script> 
 

 
</html>

0

當與和的工作,最好是添加parseInt, 這種方式,您還可以添加var result = suma('3', 5);,它將返回8,如果你沒有在parseInt函數,你解析string '3'它會Concat的它,將返回35

function suma(a, b) { 
    //3 + 5 = 8 
    return parseInt(a) + parseInt(b); 
    } 

    var result = suma(3, 5); 
    document.getElementById("result").innerHTML += "<strong>Suma</strong>: 3 + 5 = " + result + "<br>"; 
+0

感謝您的提示,但問題不是關於printi 35或8,問題是它不打印任何東西! – xinp4chi

+0

是的,我看到了,但正如你所說,它僅僅是一些需要注意的事情。 – R4nc1d

2

Necesitas聯合國的onload對闕funcione PUES駱駝EL getElement通過Id,antes de que exista el elemento y no tiene sentido。 Ademas tu salida debe ser un string。

對於這種情況,您需要一個「onload」函數,因爲您在元素之前聲明瞭getElemetnById,並且函數中的輸出也應該是一個字符串。當腳本執行元件`result`還沒有被添加到DOM

<script type="text/javascript"> 
    //rep 2 paràmetres d'entrada i els suma 
    function suma(a, b) { 
     //a = argumento 0, b = argumento 1 
     return (a + b).toString(); 
    } 
    //estas ejecutando esto, sin antes existir el id="result", por tanto debes esperar 
    // aque primero se cree, y luego ejecutar, eso se hace añadiendo esto: 

    window.onload = function(){ //espera a que todos los elements html se creen. 
      var result = suma(3,5); 
      document.getElementById("result").innerHTML += "<strong>Suma</strong>: 3 + 5 = " + result + "<br>"; 
    } 

</script>