gpt4 book ai didi

javascript - 为什么当我执行 hasAttribute() 并且元素具有属性时,它返回 false?

转载 作者:行者123 更新时间:2023-11-29 23:00:01 25 4
gpt4 key购买 nike

我正在制作一个创建倒计时的自定义元素程序。我有 2 个正在使用的自定义属性 - “ed”和“cd-type”。

我已经尝试通过 JavaScript 验证器发送它并修复了一些错误。我还尝试在构造函数中声明一个值为“this”的变量。

class SCWCountdown extends HTMLElement {
constructor() {
super();
if (this.hasAttribute("ed")) {
b = new Date(this.getAttribute("ed")).getTime() + new Date.getTimezoneOffset() * 60000;
} else {
b = new Date("2020-01-01T00:00:00Z").getTime() + new Date().getTimezoneOffset() * 60000;
}
if (this.hasAttribute("cd-type")) {
c = this.getAttribute("cd-type");
} else {
c = "dt";
}

上面的代码,对于两个条件,使用来自“else”条件的函数。我试过做

console.log(this.hasAttribute("cd-type"));
console.log(this.hasAttribute("ed"));

他们都返回了 false。这是我的 html 文件中的代码:

<!DOCTYPE html>
<html>
<head>
<!--The script with the custom elements-->
<script src="custom.js"></script>
</head>
<body>
<scw-countdown ed="2040-01-01T00:00:00Z" cd-type="uf"></scw-countdown>

链接到我的完整自定义元素脚本:https://www.scwc.cf/custom.js

倒计时链接:https://www.scwc.cf/custom-test.html

最佳答案

你的代码对我有用(除了关于日期的一些语法错误:TypeError: Date.getTimezoneOffset is not a constructor)。这是一个最小的例子:

  class SCWCountdown extends HTMLElement {
constructor() {
super();
let c;
if (this.hasAttribute("cd-type")) {
c = this.getAttribute("cd-type");
} else {
c = "dt";
}

console.log(c);
}
}

window.customElements.define("scw-countdown", SCWCountdown);
<body>
<scw-countdown cd-type="uf"></scw-countdown>
</body>

另外需要注意的是,如果您将 console.log 放在 customElements.define 调用之前,那么 cd-typeed 仍将是未定义的,因为 SCWCountdown 构造函数尚未被调用。

关于javascript - 为什么当我执行 hasAttribute() 并且元素具有属性时,它返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55869216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com