Hi Leute:
Ich spiele sehr gerne http://the-west.de und möchte jetzt einen Script schreiben, den man in die Adresszeile eingibt und dann mit einem alert ausgegeben wird.
Es soll fogendermaßen gehen:
Er soll Texte auslesen und sie mit einer Rechenaufgabe verarbeiten.
Und das ist der Punkt: Wie kann ich es machen, wenn z.B.
[CODE]
100%
[/CODE]Diese 100% da möchte ich auslesen, aber es sollte eine var sein, weil dieses sich immer verändert.
Ich kenne schon:
document.Formular.Eingabe.valueMuss nur damit ein Pfand angegeben werden?
Ich würde zum Testen eine eigene Seite erstellen, auf der du die DOM-Struktur der letztlich auszulesenden Seite nachbildest. Sonst wird das glaube ich sehr mühsam.
Ja. Du kannst es natürlich auch sofort aus dem Kopf auf Anhieb richtig schreiben. Aber das wird nicht ganz leicht. Wenn du es vermeiden willst, bei jedem neuen Versuch immer gleich das gesamte Script durch den Bookmarklet-Generator schleifen zu müssen (damit du eine Version erhältst, die du über die Adresszeile auf der Zielseite ausführen kannst), ist es sinnvoll, dir erstmal eine eigene Testseite zu erstellen. (Eine Kopie der Originalseite wäre wohl ein Gedanke.)
Ich gebe zu, der Daring Fireball-Link war zu schwierig. Ich hatte einfach das erste Suchergebnis zu Bookmarklets gepostet. (Ich kenne die Seite, deshalb war ich mir sicher, dass der Post qualitativ gut ist, und habe ihn nur grob überflogen.)
Ach ja, Anwendung:
Entsprechende Seite aufrufen, Adressleisteninhalt durch Bookmarklet-Code ersetzen, Enter drücken. (Das Script kann auch als URL eines Lesezeichens gesetzt werden.)
Hey! Super! Aber da gibt es ein Problem: Es gibt 5x die Bezeichnung bar_perc.
Kann man Java sagen:
Greife unter job_motivation auf bar_perc zu? (das muss sein, weil es einzele Fenster gibt, die Man öffnen kann und wo eine Beschriftung hin muss steht immer bar_perc)
So etwa?
[CODE]
[FONT=monospace]
window.onload = function()
{
var divs = document.getElementsByTagName(‚div‘),
i = 0;
for (i = 0; i < divs.length; i++) {
if ((divs[i].className == 'bar_motivation')divs[i].className == 'bar_perc') {
alert(divs[i].firstChild.nodeValue);
break;
}
}
}
</script>[/FONT]
[/CODE]Und noch eine Frage: Kann man Anstelle ’ auch " nehmen? Oder ist das nur dafür da, um Text anzeigen zu lassen? So
divs[i].className == 'bar_perc')
divs[i].className == "bar_perc")
Villeicht neven diese Fragen Total, aber ich bin grade erst 13 Jahre und anfäger in JavaScript! Aber in HTML (how to make love ^^) schon ganz gut[U]: www.fricke-berlin.de/west.htm
[/U]Die obrigen Eigabe - Felder sind mir Einen selbst geschriebenen Script verknüpft!
Java und JavaScript ist ein himmelweiter Unterschied! Du möchtest hier scheinbar JavaScript. Dann darfst Du nicht von Java sprechen, denn sonst bekommst Du auch zu Java Hilfe, und mit dem Code könntest Du nichts anfangen.
Und noch eine Frage: Kann man Anstelle ’ auch " nehmen? Oder ist das nur dafür da, um Text anzeigen zu lassen?
In dem Fall ist das völlig egal, geht an der Stelle beides.
Da zeigt er an, das es fehler bei der Klammersetzung gibt!
[✉](http://validator.w3.org/feedback.html?uri=http%3A%2F%2Fwww.fricke-berlin.de%2Fwest.htm;errmsg_id=79#errormsg)
The Validator found an end tag for the above element, but that element is not currently open. This is often caused by a leftover end tag from an element that was removed during editing, or by an implicitly closed element (if you have an error related to an element being used where it is not allowed, this is almost certainly the case). In the latter case this error will disappear as soon as you fix the original problem.
If this error occurred in a script section of your document, you should probably read this [FAQ entry](http://validator.w3.org/docs/help.html#faq-javascript).
Egal.
Ich möchte nur auf den vor mir liegenden Quelltext zugreifen! Nicht Domainübergreifend!
Könnte man es so machen?
(Nur wenn die „tr“: job_motivation ist, dann da zugreifen unter div class:„bar_perc“)
[FONT=monospace] <script type="text/javascript">
window.onload = function()
{
var trs = [/FONT][FONT=monospace]document.getElementsByTagName('tr')[/FONT]
[FONT=monospace] f = 0
[/FONT][FONT=monospace] for (f = 0; f < trs.length; f++)[/FONT] [FONT=monospace]{[/FONT]
[FONT=monospace]
var divs = document.getElementsByTagName('div'),
i = 0;
for (i = 0; i < divs.length; i++) {
if (divs[i].className == 'bar_motivation') {
alert(divs[i].firstChild.nodeValue);
break;
}
}
}
</script>
Und noch eine Frage: Wiso muss man dieses [/FONT][FONT=monospace]for (i = 0; i < divs.length; i++)[/FONT] hinschreiben? So wie ich es verstanden habe,
macht der eine Schleife und i = 0. Aber i muss kleiner als divs.lehght (was heist das? divs. ist die var) und in einer
Schleife legt er immer einen zu i dazu! Ist er dafür, das er es 100 mal durchlaufen läßt, um die 100% zu ereichen?[FONT=monospace]
[/FONT]
Nein, der Validator zeigt dir an, dass du HTML falsch benutzt . In dem Fall versuchst du die XHTML Schreibweise mit Shorttags in einem normalen HTML Dokument zu verwenden. Mir ging es auch in erster Linie um deine Aussage, du könntest gut HTML.
Die Schleife dient dazu, alle Elemente eines Arrays (genau geasagt einer Node Collection) zu durchlaufen.
Ach so. Aber ich wüßte gerne, wie geht das mit dem Befehl von oben. Da ich ja keine Domainübergreifenden Script machen will, müßte das gehen. Hat jemand einen Vorschlag? Ich kann es (noch) nicht!
Auf The West möchte ich ein JavaScript machen. Es soll auf den Quelltext zugreifen und unter bestimmten bereichen auf eine Zahl zugreifen. mermshaus hat mir schon ein Schönes Script geschrieben.
Nur es gibt min. 5 bereiche, die die Bezeichnung bar_perc haben. Und meine Frage war, ob man JS sagen kann, das er unter der tr class=„job_motivation“ auf div class=„bar_perc“ zugreifen soll.
Das Sript von mermshaus greift nur auf die Bar_perc zu, aber auf die Falsche.