Ich habe eine kleine Web-Komponente ohne Rahmen erstellt. Das ist mein index.html
:Web-Komponenten in Vanille JavaScript
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<script src="clock.js" async></script>
</head>
<body>
<clock-digital></clock-digital>
<script>
console.log(document.querySelector('clock-digital').cID);
document.querySelector('clock-digital').method();
</script>
</body>
</html>
und das ist mein clock.js
:
customElements.define('clock-digital', class extends HTMLElement {
get cID() {}
set cID(value) {}
constructor() {
super();
var shadowRoot = this.attachShadow({
mode: 'open'
});
var that = shadowRoot;
this.cID = setInterval(function() {
var currentdate = new Date();
that.innerHTML = `<div style="display: inline; background-color: whitesmoke; font-style: italic;">${currentdate.getHours()}:${currentdate.getMinutes()}:${currentdate.getSeconds()}</div>`;
}, 500);
}
method() {
console.log('method');
}
});
Der Browser-Konsole zeigt diesen Fehler:
undefined (index):14 Uncaught TypeError: document.querySelector(...).method is not a function at (index):14
Warum kann mein Inline-Skript Zugang cID
und method()
?
passiert es immer noch, wenn Sie die Auswahl einer Variablen zuweisen und dann die Methoden aufrufen? So etwas wie 'var clock = document.querySelector ('clock-digital'); clock.method(); ' –
Danke ich muss async auch entfernen – asv