首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用eventpreventDefault获取无法设置null的属性“”innerHTML“”

使用eventpreventDefault获取无法设置null的属性“”innerHTML“”
EN

Stack Overflow用户
提问于 2020-07-27 23:35:17
回答 1查看 26关注 0票数 0

我是javascript的初学者,正在努力学习。这里我有一个简单的输入,用户应该写一些东西,如果用户写了一些东西,它将打印出来,如果用户没有写任何东西,它应该说‘请写一些东西。’为此,我想使用not运算符(!)。你知道我为什么会得到这个错误吗:Uncaught TypeError: Cannot set property 'innerHTML' of null at myFunction at HTMLFormElement.onsubmit

下面是我的代码:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>

<body>

  <form onsubmit="myFunction(event)">
    <input type="text" id="text">
  </form>

 <div id="demo"></div>

  <script>
    var arvo = document.getElementById("text").value

    if (!arvo) {
      function myFunction(arvo) {
        event.preventDefault();
        document.getElementById(demo).innerHTML = "text you typed: " + arvo;

      }
    } else {
      function myFunction(arvo) {
        event.preventDefault();

        document.getElementById(demo).innerHTML = "Please write something";

      }
    }
    console.log(arvo)
  </script>

</body>

</html>

EN

回答 1

Stack Overflow用户

发布于 2020-07-27 23:50:26

当您重新加载页面时,JavaScript代码会立即执行。此外,如果在 if 块中创建函数,则只能在那里访问该函数。并且未定义变量event

您必须在函数中调用if-else

解决方案:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<body>

<form id="form">
<input  type="text" id="text" >
</form>

<p id="demo"></p>

<script>
function myFunction(event) {
event.preventDefault();
var text = document.getElementById('text').value; //get the value
if (text) document.getElementById('demo').innerHTML = "Text typed: " + text; // if the text is something
else document.getElementById('demo').innerHTML = "Please type something"; // if nothing
console.log(text);
}
document.getElementById('form').addEventListener('submit', myFunction); //run the function when it's submitted. Event listeners are perfect for this
</script>

</body>
</html>

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63118626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档