使用 document.getElementById 时返回 [object HTMLDivElement]

Posted

技术标签:

【中文标题】使用 document.getElementById 时返回 [object HTMLDivElement]【英文标题】:returning [object HTMLDivElement] when using document.getElementById 【发布时间】:2022-01-11 20:27:14 【问题描述】:

我将其插入到我的 html div 中:

<script>
    document.getElementById("mArray").appendChild = '<%= mArray %>'
    console.log('<%= mArray %>')

  </script>
  <div id="mArray"></div>

然后,在我的 js 文件中,我有这个:

var mArray = document.getElementById("mArray")
console.log("33: " + mArray)

但是当我记录它时,我得到了这个:

33: [object HTMLDivElement]

我希望它返回数组数据,它应该看起来像 [1,3,5,7,9]

我做错了什么?

【问题讨论】:

你期待什么结果? 我希望它返回数组数据,看起来应该像[1,3,5,7,9] .appendChild 是一种方法,因此它必须是 .appendChild(&lt;dom node&gt;) 而不是 .appendChild = "..."(尤其不是字符串) @Andreas 感谢您的回复。我也有innerHTML,但这也不起作用,结果相同。所以我不一定确定这是问题所在,但也许是其他问题? .appendChild = '&lt;%= mArray %&gt;' 绝对什么都不做(有用)。 33: [object HTMLDivElement] 按预期工作。所以... 【参考方案1】:

阅读时使用

var mArray = document.getElementById("mArray").textContent

如果你想将它用作 JS 数组(假设它是有效的 js 数组格式),你可以这样做

var mArrayContents = document.getElementById("mArray").textContent;
var myArray = JSON.parse( mArrayContents );

另外,设置值时不必使用JS。 你可以直接做

<div id="mArray"><%= mArray %></div>

【讨论】:

这就像一个魅力。我一起消除了js,只是使用了你的ejs示例。感谢您的帮助!【参考方案2】:

现在您正在记录元素本身,您需要检查其中的数据。根据信息的存储方式,您可能会通过诸如

之类的方式获取信息
document.getElementById("mArray").innerHTML;

document.getElementById("mArray").value;

【讨论】:

不幸的是,这对我不起作用。我认为还有另一个潜在的问题。 让我看看如何读取附加数组的值 rq 这不是我经常做的事情

以上是关于使用 document.getElementById 时返回 [object HTMLDivElement]的主要内容,如果未能解决你的问题,请参考以下文章

移动端实现复制内容至剪贴板

无法使用正确的位置或原始 x,y 裁剪图像。

未定义函数 - 未捕获的 ReferenceError

js元素事件绑定与解绑

使用 Charts.js 禁用动画

事件冒泡