Was bedeutet diese Fehlermeldung? TypeScript?
ihr könnt euch sicher denken ich hab diese Variable nur 1x , und any sollte auch dafür sorgen das es keine Probleme gibt, wieso also so rot unterstrichen ?
Nutze VS Code als Code Editor
2 Frage:
wieso gibt der TypeScript Compiler bei dem hier :
69 document.querySelectorAll('.test')[i].style.backgroundColor="black"
Diese Fehlermeldung
app.ts:69:38 - error TS2339: Property 'style' does not exist on type 'Element'.
Warum sollte es kein style geben bei Type Element ?
2 Antworten
zu 1. du hast die schonmal deklariert bzw wird sie wieder deklariert , z.b. in schleifen nicht so gerne gesehen glaub ich .
zu 2. du bekomsmt da kein objekt was ein style methode hat
woran das liegt, musst du gucken , ggf bekommst du keinen nodeList sondern was anderes .
also erstmal solltest du dein CSS mal aufräumen ,
alles was da rot highlight ist, ist falsch
https://jsfiddle.net/TechPech1984/pnkcj08g/
wenn du ein style { öffnest gehört da auch ein } am ende
schachteln ist nicht erlaubt
body {
.classanme {
// errooooorrr
}
}
body {
}
.classname {
// richtig
}
Ja ist glaub ein missverständnis
das ist natürlich Scss , da geht nesting.
Kann mab auch bei codepen auswählen.
Hab nur css gesagt weil es am ende eh zu validen css kompiliert wird.
Beim Hovern siehst du dann die <- -> Pfeile links und rechts.
Und bilder switchen über diese Punkte oder die Preview funktioniert auch.
und dann läuft das auch
welche elemente das hat zur laufzeit kann wohl nciht ermittelt werden . ergo eine IDE ist auch nur so schlau wie sie halt gemacht wurde .
ja und was läuft jetzt nicht , oder regst du dich jetzt über deine IDE auf das sie keine intelligenz hat .
übrigens hättest du bei scss mir auch die fertig compilierte version geben können .
Ja das lag dann wohl an IDE mit der "blockbezogene variable irgendwas kann nicht erneut ..."
Ich habe eine VS Code Extension aktualisiert und es war weg.
aber der zweite Fehler im Kompiler wollte mir nur sagen ich es so wie Winfimet machen soll, bei der dom manipulation auch "as Html element" dazu schreiben und ein Semikolon setzen soll
(document.querySelectorAll('.dot')[i] as HTMLElement).style.backgroundColor="black";
übrigens hättest du bei scss mir auch die fertig compilierte version geben können .
Das wäre unlesbar, genauso wie kompiliertes JS.
const test: HTMLElement = document.querySelectorAll('.test');
test[i].style.backgroundColor="black"
oder
(document.querySelectorAll('.test')[i] as HTMLElement).style.backgroundColor="black"
Ich hab diese Variable mit dem Namen wirklich nur 1x Deklariert.
https://codepen.io/JohnnDoee/pen/poVoBQE
Kannst du vielleicht mal drüber schauen was da nicht stimmen soll, das meiste hab ich englisch Kommentiert.
(und vielleicht wie ich das besser machen könnte) ?
Der Code ist irgendwie viel zu lang und komisch finde ich und das CSS ist auch nicht so gut angepasst.