• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Javascript zum auslesen von PHP-seiten

Status
Für weitere Antworten geschlossen.

MagierJack

Neues Mitglied
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
Code:
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:
<div class="bar">
   <div class="bar_perc">100%</div>
</div>
Diese 100% da möchte ich auslesen, aber es sollte eine var sein, weil dieses sich immer verändert.

Ich kenne schon:
Code:
document.Formular.Eingabe.value
Muss nur damit ein Pfand angegeben werden?

Es soll aber dann in der Adresszeile fungieren!

MFG; MagierJack
 
Werbung:
hä, wie jetzt? Ich soll die Struktur nachbilden und dann darauf mein Script testen?

Und den 2 Punkt kapiere ich nicht!
 
Werbung:
MagierJack schrieb:
hä, wie jetzt? Ich soll die Struktur nachbilden und dann darauf mein Script testen?

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.)

MagierJack schrieb:
Und den 2 Punkt kapiere ich nicht!

MagierJack schrieb:
Es soll aber dann in der Adresszeile fungieren!

mermshaus schrieb:
Script zum Erstellen von Bookmarklets (in der Adresszeile ausführbares JavaScript).

(Hervorhebungen durch mich.)
 
OK, aber meine Eigentliche Frage war:
Wie ist der Befehl, das Java etwas auslesen soll und dann als value hinschreibt?

so etwa?
Code:
div.div.div.motivation.value
 
Werbung:
Wenn ich aus diesem Text
Code:
</div></td>
    </tr>
    <tr class="job_motivation">
        <td><img src="http://www.html.de/images/job/motivation.png" alt=""> </td>
        <td><div class="bar">
    <div class="bar_fill" style="width: 150px;"></div>
    <div class="bar_perc">100%</div>

Das <div class="bar_perc">100%</div> rausbekommen möchte, wie geht das?




Diese Seiten haben mir gelehrt, wie es mit einer ID geht! Aber soweit ich es sehe, hat das ding gar keine ID!
 
Komplettbeispiel:

HTML:
<!DOCTYPE html>

<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>New</title>
        <script type="text/javascript">

window.onload = function()
{
    var divs = document.getElementsByTagName('div'),
        i    = 0;

    for (i = 0; i < divs.length; i++) {
        if (divs[i].className == 'bar_perc') {
            alert(divs[i].firstChild.nodeValue);
            break;
        }
    }
}

        </script>
    </head>

    <body>


        </div></td>
    </tr>
    <tr class="job_motivation">
        <td><img src="http://www.html.de/images/job/motivation.png" alt=""> </td>
        <td><div class="bar">
    <div class="bar_fill" style="width: 150px;"></div>
    <div class="bar_perc">100%</div>


    </body>

</html>

Entscheidender Code:

Code:
var divs = document.getElementsByTagName('div'),
        i    = 0;

    for (i = 0; i < divs.length; i++) {
        if (divs[i].className == 'bar_perc') {
            alert(divs[i].firstChild.nodeValue);
            break;
        }
    }

Fertiges Bookmarklet (erstellt mit http://ted.mielczarek.org/code/mozilla/bookmarklet.html):

Code:
javascript:(function(){var%20divs=document.getElementsByTagName('div'),i=0;for(i=0;i<divs.length;i++){if(divs[i].className=='bar_perc'){alert(divs[i].firstChild.nodeValue);break;}}})();

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]        <script type="text/javascript">

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]
Und noch eine Frage: Kann man Anstelle ' auch " nehmen? Oder ist das nur dafür da, um Text anzeigen zu lassen? So
Code:
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:
www.fricke-berlin.de/west.htm

Die obrigen Eigabe - Felder sind mir Einen selbst geschriebenen Script verknüpft!
 
Zuletzt bearbeitet:
Werbung:
Wie ist der Befehl, das Java etwas auslesen soll und dann als value hinschreibt?

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!

</head>
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.

Egal.

zu deiner Frage: Soweit ich das verstehe, willst du mit JS, Domain übergreifend Seiten manipulieren, das geht nicht: Same Origin Policy

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")

Code:
[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]for (i = 0; i < divs.length; i++) 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?
 
Werbung:
Da zeigt er an, das es fehler bei der Klammersetzung gibt!
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!
 
"der Befehl" ist ein Skript und das macht genau das was du gefragt hast. Wenn es dir nicht weiter hilft, solltest du deine Frage konkretisieren.
 
Werbung:
Jetzt also ganz konkret:

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.

Konkret genug?
 
Werbung:
Also eine Klasse - da eine Klasse nicht eindeutig ist, kannst du kein Element Anhand einer Klasse indentifizieren
 
Was du machen kannst ist mit einem Selektorskript (z.b. sizzle) per CSS Selektor darauf zugreifen, das würde gehen.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben