2016-01-20 282 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>