mmofacts.com

Javascript macht komische Sachen

gepostet vor 19 Jahre, 2 Monate von Kariya
Was ist daran falsch:

(...)


window.test.innerHTML='Dies ist ein Testtext.';

(...)

Hier soll der Text erscheinen.

(...)

Original von Der Browser bzw. die JS-Konsole

Fehler: test has no properties

Ich habe diese Schreibweise aus einem großen/bekannten BG und da hat es immer gut funktioniert...

Das Problem ist halt, daß diese Textausgaben vor einem nicht einfarbigen Hintergrund erscheinen sollen und Eingabefelder deshalb nicht so besonders geeignet sind. :roll:
gepostet vor 19 Jahre, 2 Monate von poncho
Ich würde es so machen:

if(element = document.getElementById('test'))

{
element.innerHTML = 'Dies ist ein Testtext';
}
gepostet vor 19 Jahre, 2 Monate von Fornax
War es nicht eine Funktion?

window.test.innerHTML('Dies ist ein Testtext.');

Ich kann heut nachmiddag mal nachgucken, ich hab ein dickes Javascript buch
gepostet vor 19 Jahre, 2 Monate von woodworker
hast du ein fenster mit namen test?
wenn nein ist windo.test falsch

die getElementById() funktion ist die beste methode
gepostet vor 19 Jahre, 2 Monate von Kariya
Hmm, dann teste ich das mal.

Das mit dem window.test hatte ich so verstanden, daß damit das Element "test" im aktuellen Fenster (window) gemeint ist und davon soll es das innereHTML setzen :wink:
gepostet vor 19 Jahre, 2 Monate von wusch
 
document.getElementById('test').innerHTML = "blubb";
gepostet vor 19 Jahre, 2 Monate von woodworker
bist jetzt nummer 3
mit diesem tip ;p
gepostet vor 19 Jahre, 2 Monate von wusch
wollte es nur noch festigen.

war erst 10 uhr, da bin ich grad erst auf
gepostet vor 19 Jahre, 2 Monate von HSINC
es liegt daran das das element test beim aufruf der js funktion noch nicht im quellcode vorhanden ist und damit nicht drauf zugegriffen werden kann
gepostet vor 19 Jahre, 2 Monate von Kampfhoernchen
Hm. Erstmal zum Titel: JS macht nur komische Sachen.

InnerHTML ist nach DOM keine Funktion, sondern eine Eigenschaft.
gepostet vor 19 Jahre, 2 Monate von BLUESCREEN
Original von Kariya
Das Problem ist halt, daß diese Textausgaben vor einem nicht einfarbigen Hintergrund erscheinen sollen und Eingabefelder deshalb nicht so besonders geeignet sind.


gepostet vor 19 Jahre, 2 Monate von schokofreak
igit! Vergesst das mit den schönen transparenten Input- Boxen.
Macht doch einfach Javascript - so wie man es tun soll.

Das heist:
resp...

while getEl... .hasChildnOdes
{
getEl.removeChild(getEl.getFirstChild)
}
document.getElementById("blub").appendChild(document.createTextNode("asdfasdfasdf"));

Funzt auf IE, FF, Opera, Konqueror, ...

Wieso nur immer kompliziert machen? Schon klar motzt ihr dass der eine oder andere Browser kein Javascript kann - wenn Ihr es nicht könnt!

Gruss
gepostet vor 19 Jahre, 2 Monate von schokofreak
Und wenn auch das nicht klappt...
Da geb ich mal wieder n kleines Stückchen brauchbaren Code zur ANSICHT:

http://burn-alligator.dyndns.org:85/chatdemo/chatdemo/client/dom.js

(Sorry TuD: Du spielst mal File- Hoster )
Das ganze funzt dann so:
addDomOBJ(document.getElementByID("blub"), "hallo");

Da könnt ihr sogar beliebiges, valides HTML (als XML Gespeichert) übergeben. (ACHTUNG: HTML als Valides XML != XHTML; XHTML Ist schrottig).
Das löschen des Contents werdet ihr sicher noch selbst herausfinden

Gruss

PS: Wer das ganze auch VERWENDEN Will... bitte via Mail anfragen ob erlaubt.
gepostet vor 19 Jahre, 2 Monate von Kariya
Jo, vielen Dank es funktioniert jetzt. :mrgreen:
gepostet vor 19 Jahre, 2 Monate von Kariya
So, hab wieder mal ein seltsames Phänomen entdeckt: Also ich habe eine Seite, die ein relativ kompliziertes Javascript enthält (ein Schiffbaukasten um genau zu sein).

Wenn man das über die Menüleiste des Spiels aufruft, kommt nur ein schlichtes "Fehler: Objekt erwartet". Drückt man aber dann F5, funzt alles einwandfrei. Wieso? Oder besser gesagt: Was muß ich machen, damit es gleich von Anfang an geht? Außer die Seite automatisch "onLoad" F5 drücken zu lassen :wink:

PS: Das, was da als JS importiert wird, ist eigtl. eine PHP-Datei, man soll schließlich später leicht neue Technologien und Schiffsmodule hinzufügen oder deren Werte ändern können... :mrgreen:
gepostet vor 19 Jahre, 2 Monate von schokofreak
Unter Umständen ist der Download des JS noch nicht abgeschlossen, und du möchtest bereits auf Funktionen Innerhalb dieses JavaScript Files zugreiffen?

ist ein unterschätztes Problem, welches sehr oft auftritt...
Einfachste Möglichkeit, das zu überprüfen: Lokaler Webserver; Kucken dass SEHR viele Ressourcen zur Verfügung stehen.
Wenns dann geht, ist schon mal verdächtig.

Versuch 2: Cache maximal einstellen...
Nochmals wiederholen.

Gruss
gepostet vor 19 Jahre, 2 Monate von Fornax
Was mir schon öfters passiert ist, ist dass das Script auf ein Formular zugreifen soll, was im HTML-Code erst später kahm. Also am besten eine Funktion basteln, die mit onload="" aufegrufen wird, und die erst das ganze JavaScript zum laufen bringt.
gepostet vor 19 Jahre, 2 Monate von Dillo
oder ganz einfach das script erst im code nach allen elementen notieren, die bereits verfügbar sein müssen, wenn das script ausgeführt wird
gepostet vor 19 Jahre, 2 Monate von Kariya
Also eine onLoad-Funktion gibt es:
[...] onLoad="form_reset();">


Und auch die Funktion existiert:
function form_reset()

{
cons.engine.value=1;
cons.armor.value=0;
cons.shield.value=0;
[...] hier wird halt noch alles mögliche andere resettet [...]
cons.wb31.disabled=false;
cons.wb32.disabled=false;
cons.wb33.disabled=false;
cons.wb34.disabled=false;
calculate();
}

Allerdings ist calculate() erst danach definiert. Aber sowas hat noch nie Probleme gemacht...

Das einzigste was ich jetzt schon ein paar mal bei anderen Javascripts beobachtet hab: Manchmal macht's nen Unterschied, ob man das Script im HEAD oder im BODY einfügt...
gepostet vor 19 Jahre, 2 Monate von Drezil
naja .. seit ich in mich der schule mit pascal rumschlagen musste definire ich die funktionen auch im quellcode vor dem aufruf ...
in pascal würd das nit funzen:

foo();
function foo() {
}

das aber schon:
function foo() {
}
foo();
is zumindest meine erfahrung
gepostet vor 19 Jahre, 2 Monate von Kariya
Hab's grad ausprobiert. Hier bringt das irgendwie nix. Auch wenn ich die Größe des Cache-Speichers voll aufdrehe, geht es erst, nachdem man Aktualisieren/F5 gedrückt hat.
gepostet vor 19 Jahre, 2 Monate von Drezil
Ich hab bei meinem zusammenstellen was ähnliches ...
statisches js kannste du in ne datei auslagern, die ruhig vom browser gecached werden kann .. die bindest einfach über im head ein .. des funzt hoff ich .. =)

wenn das variabel ist kannste ja mal versuchen das im head zu speicher (also vor dem -aufruf) .. villeicht hilfts ..
gepostet vor 19 Jahre, 2 Monate von Kariya
Ja, das in die Seite zu integrieren, damit geht's schon. Es gefällt mir zwar nicht wirklich, wenn jedesmal wieder eine 160KB-Seite aufgerufen wird, aber so funzt es jetzt immerhin... :roll:

Auf diese Diskussion antworten