我一直得到结果未定义但警报输出结果! 有点令人费解,同样的事情发生在 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。但我这样就没有收到错误消息。
最佳答案
添加var
至frm_i
和result
和地点:
document.getElementById('demo').innerHTML = result
在函数内部。它超出了范围。
添加了测试服务器以验证成功并将#demo更改为<output>
为了防止表单提交后刷新,可以添加target
属性为<form>
:
<form id="frm1" action="http://httpbin.org/post" method="post" target='ifm'>
target
的值可以是您可以控制的任何位置,并且 '_blank'
这是一个新页面(就像 anchor 一样)。如果您希望提交无处可去,请使用:
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>
关于Javascript 变量未定义但警报输出变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43352021/