javascript - 从外部获取ElementById 不起作用

标签 javascript html getelementbyid

我尝试在提交表单后隐藏 div,但没有成功。 所以,我想知道使用外部js文件时创建div的流程。 考虑这段代码:

HTML:

<!DOCTYPE html>
<html>
<head>
  <title>hello</title>
  <link rel="stylesheet" type="text/css" href='style.css'></link>
</head>
<body>
  <script src='external.js'></script>
</body>
</html>

外部.js:

div1 = document.createElement("div");
div1.setAttribute('id', 'banana');
div1.innerHTML="<form id='form1' method='post' onsubmit='changeScreen()'> firstname: <input type='text'  name='firstname' value='' /> <br> surname:<input type='text' name='surname' value='' /> <br> <input type='submit' id='button2' name='submit2' value='login'/></form>";
document.body.appendChild(div1);


function changeScreen(){

    document.getElementById('banana').style.display='none';   
}

(我想练习从外部 js 文件创建元素,所以这就是 html 看起来像这样的原因,我根本不想更改它。)

div创建成功。但是当我提交时,它只是重置 'firstname' 和 'username' 中的值。如果我只是在 changeScreen() 中放置一些警报,它就会显示它们。 提前告知任何想法(我也为糟糕的英语道歉)!

最佳答案

这是因为您的表单发布到相同的 URL,执行与刷新相同的操作。要在提交后留在同一页面,请将 return false; 添加到您的代码中。

div1 = document.createElement("div");
div1.setAttribute('id', 'banana');
div1.innerHTML="<form id='form1' method='post' onsubmit='return changeScreen();'> firstname: <input type='text'  name='firstname' value='' /> <br> surname:<input type='text' name='surname' value='' /> <br> <input type='submit' id='button2' name='submit2' value='login'/></form>";
document.body.appendChild(div1);
function changeScreen(){

    document.getElementById('banana').style.display='none';   

    return false;
}

关于javascript - 从外部获取ElementById 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34167909/

相关文章:

javascript - 计算所有浏览器中元素的绘制时间

javascript - 动态生成的元素 Protractor id

javascript - 为什么我无法使用 GetElementById 查找页面上的元素?

javascript - 我可以使用 document.getElementById(href) 显示页面的特定部分吗?

javascript - 更改所有具有 id= 值的元素

php - 对用户 PC、PHP 或 JS 进行基准测试的最佳方法是什么?

javascript - jquery 在相对于 'This' 的多个元素上运行相同的函数

javascript - JSON 菜单按字母顺序排列

html - 减少 svg 图像的厚度(箭头)

html - 如何在 css 中使::before/::after 元素可点击?