getelementbyid (id)返回一个包含所有未定义变量的对象

document.getElementById(id) returns an object with all undefined variables

本文关键字:未定义 变量 包含所 对象 id 返回 getelementbyid 一个      更新时间:2023-09-26

我的页面上有一系列画布元素,我用来制作时钟。其中每一个都有许多具有默认值的变量——这些变量在任何时候都不是未定义的。(以下是我使用的一个变量的例子,但这是所有其他变量的情况。)变量'am'默认为false,除非我将其更改为true。这是我的第一个时钟:

<canvas id="piechart0" width="200" height="200"></canvas>

我正在努力使它'piechart0 '。am == true',则出现一个带有am图像的按钮,如果'piechart0. 'PM == false',它就消失了。但是,当我执行以下操作时:

<script>
    var clock = document.getElementById("piechart0");
    var am = clock.am;
    if (am) {
      ........
</script>

它正确地将时钟识别为"canvas#piechart0",但两者都是时钟。Am和新变量Am是"未定义的",而不是piechart0的true或false。Am实际上等于。为什么所有的变量出来为未定义时,脚本是抓取正确的元素/我在这里做错了什么?

编辑:愚蠢的错误,我使用不同的类来跟踪变量,这些变量将决定我将在画布上绘制什么。这是这个类的变量,我试图访问,这就是为什么帆布。Am会显示为未定义的。解决了

输出正确。

clock变量指向画布HTML对象。从你张贴在这里,你还没有真正定义属性的画布。因此,时钟。

如果你这样做

console.log("Should be the canvas object:: " + clock);
console.log("Did not define this, so it should output undefined:: " + clock.am);
console.log("Did define this as 200, so it should output 200:: " + clock.width);

将显示宽度,但am将未定义。