javascript - 试图让文本表示变量,但它只显示 [object HTMLDivElement]

标签 javascript html

当我按下“获取金钱”时,它会添加 [object HTMLDivElement]1 而不是仅 1。这是代码:

<script>
    function cash(){
        var Cash = 0
        document.getElementById("Cash").textContent = Cash
    }
        function text(){
            Cash = Cash + Number(1)
            document.getElementById("Cash").textContent = Cash
        }
    </script>
</head>

<body onload="cash()">
    <div id="Cash"></div>
    <button class="button-long" onclick="text()">Get Money</button>
</body>

我不知道发生了什么,并且我没有找到任何其他关于如何解决此问题的信息。 CSS与它无关,我已经检查了代码很多次,也更改和测试了很多次,但我在这个网站或任何其他网站上都没有找到任何与此相关的内容。我希望获得有关此问题的帮助,因为我不知道发生了什么。

最佳答案

您在 cash 函数内声明了 Cash 变量,该变量对 text 函数不可见。要解决此问题,您需要将 Cash 声明移到 cash 函数外部,这样两个函数都可以看到该声明,如下所示:

<head>  
  <script>
    var Cash = 0

    function cash(){
      document.getElementById("Cash").textContent = Cash
    }

    function text(){
      Cash = Cash + Number(1)
      document.getElementById("Cash").textContent = Cash
    }
  </script>
</head>

<body onload="cash()">
    <div id="Cash"></div>
    <button class="button-long" onclick="text()">Get Money</button>
</body>

鉴于 Cashtext 函数不可见,您现在可能想知道为什么观察到该值的 [object HTMLDivElement] text 函数中的 Cash 而不是 undefined。原因是因为 DOM 中还有一个具有相同名称 id 的元素,即 Cash,它变成 global property in the document 。通过全局声明 var Cash = 0,这将隐藏对 DOM 元素的 Cash 引用。

关于javascript - 试图让文本表示变量,但它只显示 [object HTMLDivElement],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60626847/

相关文章:

javascript - 选中单选按钮之一时启用表单字段,取消选中时禁用字段

javascript - Angularjs - 从 HTML 代码输出 DOM 元素

html - Vue/HTML/JS 如何使用下载标签将文件下载到浏览器

html - 如何修复 iframe 中的 mailto 链接错误

javascript - 使用nodejs访问github存储库

javascript - 尝试制作自动交通灯

javascript - 维基百科 API - 词义

html - 如何在 Ruby on Rails 中将 HTML 标记放入 <label> 中?

PHP DOMDocument/XPath : Get HTML-text and surrounded tags

javascript - Pager.js : How to lazy load bindings