我希望能够创建一个自定义HTML元素,该元素可以显示cookie的值,以便可以轻松地将cookie值插入到我的文档中。 到目前为止,我的代码是:
var cNum = 0;
customElements.define('get-cookie', getC);
class getC extends HTMLElement {
constructor() {
super();
cNum++;
var cName = this.getAttribute('cName');
this.setAttribute('id', cName + cNum);
var currentE = document.getElementById(cName + cNum);
var cValue = 'Oops! We have run into a problem';
if (this.hasAttribute('cName')) {
cValue = getCookie(this.getAttribute('img'));
}
var outC = document.createElement('a');
outC.innerHTML = cValue;
currentE.appendChild(outC);
}
}
和
<p>
Current User: <get-cookie cName="currentUSR" ></get-cookie>
</p>
但是当我在firefox上运行它时,我得到了这个错误:
ReferenceError:初始化之前无法访问词汇声明“ getC”(myfile.js:4:1)
也:我对jQuery的了解为零,如果我可以避免的话,我宁愿这样做。
非常感谢所有帮助!谢谢!
编辑:我忘了补充一点,我已经在代码的其他地方定义了getCookie()函数。
答案 0 :(得分:1)
customElements.define('get-cookie', getC);
应该在您实际定义了类之后位于底部。
在类定义之后保留它可以解决该问题:
var cNum = 0;
class getC extends HTMLElement {
constructor() {
super();
cNum++;
var cName = this.getAttribute('cName');
this.setAttribute('id', cName + cNum);
var currentE = document.getElementById(cName + cNum);
var cValue = 'Oops! We have run into a problem';
if (this.hasAttribute('cName')) {
cValue = this.getCookie(this.getAttribute('img'));
}
var outC = document.createElement('a');
outC.innerHTML = cValue;
currentE.appendChild(outC);
}
getCookie() {
return 'John Doe';
}
}
customElements.define('get-cookie', getC);
<p>Current User:
<get-cookie cName="currentUSR"></get-cookie>
</p>
在这里,我也不确定getCookie
是什么。因此,我在类上创建了一个名为getCookie
的方法,现在我在constructor
中将其与this
关键字一起使用。