Javascript变量未定义但警报输出变量

时间:2017-04-11 16:56:51

标签: javascript undefined

我一直得到结果未定义但警报输出结果! 有点令人费解,同样的事情发生在Chrome和IE中。

<!DOCTYPE html>
<html>
  <head>  
  </head> 
<body>


<form id="frm1" action="#" method="post">
  Yammer ID: <input type="text" name="y_id"><br><br>
  <input type="submit" onclick="myFunction()" value="Submit">
</form> 
<p id="demo">uuu</p>

<script> 
function myFunction() {
  frm_i=document.getElementById("frm1");
  result=frm_i.elements[0].value;
  alert (result);
}    
  document.getElementById("demo").innerHTML = result;    
</script>

</body>
</html>

我说:

document.getElementById("demo").innerHTML = result;

在函数内部,我没有收到错误,uuu会短暂更改输入文本,然后快速更改回uuu。但是我没有这样的错误信息。

1 个答案:

答案 0 :(得分:0)

var添加到frm_iresult并放置:

  

document.getElementById('demo').innerHTML = result

功能内部。它超出了范围。

添加了测试服务器以验证成功,并将#demo更改为<output>

为了防止表单在提交后刷新,您可以将target属性添加到<form>

 <form id="frm1" action="http://httpbin.org/post" method="post" target='ifm'> 

target的值可以是您可以控制的任何位置,'_blank'是新页面(就像锚点一样)。如果您希望提交无处可去,请使用:

 target='#/'

在此代码段中,我提交给测试服务器,然后使用iframe的name属性将响应重定向到空白iframe。

<强>段

<!DOCTYPE html>
<html>

<head>
</head>

<body>


  <form id="frm1" action="http://httpbin.org/post" method="post" target='ifm'>
    Yammer ID: <input type="text" name="y_id"><br><br>
    <input type="submit" onclick="myFunction()" value="Submit">
    <output id='demo'></output>
  </form>

  <iframe name='ifm' src='about:blank'></iframe>

  <script>
    function myFunction() {
      var frm_i = document.getElementById("frm1");
      var result = frm_i.elements[0].value;
      alert(result);
      document.getElementById("demo").innerHTML = result;
    }
  </script>

</body>

</html>