id Wert auslesen
tani
- html
Hallo,
ich würde gerne meine Html Seite auf den Inhalt der tag ids überprüfen.
Also wenn id="hallo",
soll an der Stelle (natürlich nach dem tag der die id beeinhaltet) etwas ausgegeben werden.
Ist es in Html möglich den Inhalt der Id (hier "hallo")auszulesen oder muss ich dafür z.B. javascript nehmen?
Danke für eure Hilfe.
HTML ist nur eine Auszeichnungssprache. Um etwas im Code auszulesen, zu bearbeiten... musst du dann wohl javascript nehmen.
HTML ist nur eine Auszeichnungssprache. Um etwas im Code auszulesen, zu bearbeiten... musst du dann wohl javascript nehmen.
Danke und wie kann ich das in javascript realisieren?
Hab es schon mit getElementbyId("hallo") probiert aber da bekomm ich ja nicht den Wert "hallo" zurückgeliefert sondern ein Element.
Ich kann dann auch das aussehen des nachfolgenden Textes ändern aber keinen anderen Text hinschreiben oder keine Tags an der Stelle einfügen.
Hallo tani.
Ich kann dann auch das aussehen des nachfolgenden Textes ändern aber keinen anderen Text hinschreiben oder keine Tags an der Stelle einfügen.
Das ist mit http://de.selfhtml.org/javascript/objekte/all.htm#inner_html@title=innerHTML bzw. http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=createElement, http://de.selfhtml.org/javascript/objekte/document.htm#create_text_node@title=createTextNode und dem http://de.selfhtml.org/javascript/objekte/node.htm@title=node-Objekt möglich.
Einen schönen Donnerstag noch.
Gruß, Ashura
so klappt es.
test = document.getElementById("hallo").id;
alert(test);
so klappt es.
test = document.getElementById("hallo").id;
alert(test);
Vielen Dank!
Hab es einfach mal in meine Seite kopiert, aber nun kommt die Meldung
"das ein Objekt erwartet wird" in der test = ... Zeile.
Muss ich das noch irgendwie anderst einbinden?
Ich hab da nur mal schnell was getippt um zu zeigen wies funktioniert. Das ist jetzt keine fertiges script.
Das musst noch selber anpassen.
Der Quelltext mit dem ich das mal ausprobiert habe sah so aus:
<html>
<head>
<script type="text/javascript">
<!--
function name() {
test = document.getElementById("hallo").id;
alert(test);
}
//-->
</script>
</head>
<body onLoad="name()">
<div id="hallo">
</div>
</body>
</html>
Ich weiss ja nicht genau wie viel javascript du beherrscht.
Ich weiss ja nicht genau wie viel javascript du beherrscht.
Nicht wirklich viel hab erst vor ner Woche notgedrungen damit angefangen, da ich in Asp.net keine Möglichkeit gefunden habe, außer eben mit Javascript ein neues Fenster zu öffnen.
Vielen, vielen Dank für deine Hilfe!
Moin!
test = document.getElementById("hallo").id;
Den Code kann man vereinfachen:
test = "hallo".
Denn wenn ich getElementById mache für die ID "hallo", dann wäre es doch eine extreme Überraschung, wenn in dessen ID-Attribut etwas anderes als "hallo" stehen würde.
Sozusagen ein Henne-Ei-Problem: Wie kann ich die ID eines Elements auslesen, wenn ich dazu erstmal die ID des Elements kennen muß?
- Sven Rautenberg
Stimmt das ist sehr blöd,
aber ich habe eine Seite mit mehreren Tags, von denen manche die selbe mir bekannte id "hallo" haben.
Nun möchte ich ja an dieser Stelle wo die id "hallo" ist den Text ändern bzw. ein Bild anzeigen lassen.
Und so wie ich das verstanden hab kann man durch
getElementByID("hallo") den danach folgenden Text verändern also muss ich doch auf hallo überprüfen oder nicht.
Ich steh voll auf dem Schlauch! Hilfe!
Also nochmal langsam, ich will,
- id="hallo"?
JA: ein Bild einfügen Nein: soll nichts passieren
Aber mir reichts erstmal wenn ich überall dort wo die id="hallo" ist ein Bild eingefügt wird.
Danke für eure Geduld mit mir!!!
Hallo tani.
Nun möchte ich ja an dieser Stelle wo die id "hallo" ist den Text ändern bzw. ein Bild anzeigen lassen.
Also hast du *in einem Dokument* mehrfach ein und die selbe ID?
Wenn ja, dann solltest du dir Gedanken darüber machen, wofür „ID“ steht.
Einen schönen Donnerstag noch.
Gruß, Ashura
Hallo,
vielen Dank für eure Denkunterstützung, mir ist klar geworden das ich die id nicht zur Überprüfung nehmen kann.
Dann muss ich es wohl doch mal mit name oder so probieren.
Will einfach mit irgendwas (id, name,...) eine Stelle markieren,
diese Stelle soll dann erkannt werden und es soll dort dann ein
und das selbe Bild wo ich gespeichert habe angezeigt werden.
Grüße
Moin!
aber ich habe eine Seite mit mehreren Tags, von denen manche die selbe mir bekannte id "hallo" haben.
Das darf nicht sein. Pro Dokument darf eine ID nur ein einziges Mal vorkommen! Kommt sie mehrfach vor, kriegst du Probleme.
HTML selbst stört sich rein praktisch-technisch zwar nicht dran, obwohl der Validator meckert, aber der Javascript-Zugriff macht Probleme.
Nun möchte ich ja an dieser Stelle wo die id "hallo" ist den Text ändern bzw. ein Bild anzeigen lassen.
Da die ID nur ein einziges Mal im Dokument auftreten kann, reicht es ja, zu wissen, welche ID du verändern möchtest, getElementById() zu verwenden, und die ID dann einfach nicht weiter "auszulesen".
Übrigend: Es heißt mit Absicht "getElementById" mit Singular "Element" - eben weil da nur ein einziges HTML-Element gefunden wird, weil die ID nur ein einziges Mal im Dokument vorkommen darf.
Andere Zugriffsmethoden heißen "getElementsByTagName()" und "getElementsByName()" - Plural "Elements", weil name-Attribut oder auch Tags eben mehrfach identisch im Dokument vorkommen dürfen - wäre ja auch schlimm, wenn nur ein einziges <p> erlaubt wäre. :)
Und so wie ich das verstanden hab kann man durch getElementByID("hallo") den danach folgenden Text verändern also muss ich doch auf hallo überprüfen oder nicht.
Was heißt hier "danach folgender Text"? getElementById() gibt das eine HTML-Element mit der fraglichen ID zurück. Dieses Element kann man dann manipulieren. Wenn der zu ändernde Text komplett IN diesem Element drinsteht, dann geht das recht einfach, steht er außerhalb dieses Elements "dahinter" im Quelltext, wird es komplizierter, aber keinesfalls unmöglich.
Also nochmal langsam, ich will,
- id="hallo"?
JA: ein Bild einfügen Nein: soll nichts passieren
getElementById() wird dir entweder eine Referenz auf das eine Element dieser ID zurückgeben, oder "undefined", wenn die ID nicht existiert.
Basierend darauf kannst du dann das Bild einfügen und den Rest erledigen.
- Sven Rautenberg
Andere Zugriffsmethoden heißen "getElementsByTagName()" und "getElementsByName()" - Plural "Elements", weil name-Attribut oder auch Tags eben mehrfach identisch im Dokument vorkommen dürfen - wäre ja auch schlimm, wenn nur ein einziges <p> erlaubt wäre. :)
Vielen Dank für den Tip mit Singular und Plural.
Hab es jetzt mal mit "getElementsByName()" probiert,
aber es liefert einen Fehler und ich weis nicht warum.
Hier mein Code:
<html>
<head>
<titel> Test</titel>
<script type="text/javascript">
<!--
function load()
{
document.getElemetsByName("PopupLink")[0].src='http://localhost:1081/popup.aspx';
}
//-->
</script>
</head>
<body onLoad="load()">
<iframe name="PopupLink" src="frame1.htm" width="400" height="300"></iframe>
</body>
</html>
Also beim Laden der Seite lasse ich die Funktion load() aufrufen,
welche ja getElement... enthält.
So viel wie ich aus der Beschreibung die es hier gibt gelesen hab,
liefert diese Methode ein Array zurück, also spreche ich die erste Stelle des Arrays an.
Dann hab ich auch noch gesehen das man diese Methode nicht auf alle Html-tags anwenden kann also nehm ich ein ifram mit dem es wohl funktioniern soll.
Diesem iframe müsste ich doch nun den Pfad wo es den Inhalt herholen soll übergeben können oder nicht?
Es kommt aufjedenfall dies Fehlermeldung
"Objekt unterstützt dies Eigenschaft oder Methode nicht!"
Stelle ist die wo getElement... steht.
Was mach ich falsch?
Moin!
Hab es jetzt mal mit "getElementsByName()" probiert,
aber es liefert einen Fehler und ich weis nicht warum.
document.getElemetsByName("PopupLink")[0].src='http://localhost:1081/popup.»» <iframe name="PopupLink" src="frame1.htm" width="400" height="300"></
Wenn du Adressen von Frameelementen ändern willst, lies Fensterzugriff in Javascript.
So viel wie ich aus der Beschreibung die es hier gibt gelesen hab,
liefert diese Methode ein Array zurück, also spreche ich die erste Stelle des Arrays an.
Das ist korrekt. Wobei du "Elemets" geschrieben hast in deinem Code, da fehlt ein "n".
Dann hab ich auch noch gesehen das man diese Methode nicht auf alle Html-tags anwenden kann also nehm ich ein ifram mit dem es wohl funktioniern soll.
Ich wäre da skeptisch.
Abgesehen davon: Welchen Sinn hat deine Aktion? Einem IFrame onload eine andere, fixen Adresse zuzuweisen klingt idiotisch, da schreibt man doch schlauerweise einfach die gewünschte Adresse direkt in das src-Attribut hinein.
Diesem iframe müsste ich doch nun den Pfad wo es den Inhalt herholen soll übergeben können oder nicht?
Deine Idee funktioniert im Grundsatz schon, die Eigenheiten des IFrame könnten das aber verhindern, da IFrames eine eher exotische Rolle spielen, weil sie Fensterobjekte sind. Abgesehen davon, dass du noch einen Tippfehler im Code hast...
Und auch bei Bildern würde ich niemals getElementsByName() verwenden, sondern die existierende Collection der Bilder document.images. Damit ist der Zugriff auf benamste Bilder ebenfalls möglich, und zwar ziemlich leicht.
- Sven Rautenberg
Das ist korrekt. Wobei du "Elemets" geschrieben hast in deinem Code, da fehlt ein "n".
Danke für den Hinweis, sollte vielleicht mal in nem richtigen Editor und nicht nur im Notepad coden.
Abgesehen davon: Welchen Sinn hat deine Aktion? Einem IFrame onload eine andere, fixen Adresse zuzuweisen klingt idiotisch, da schreibt man doch schlauerweise einfach die gewünschte Adresse direkt in das src-Attribut hinein.
Ich habe bereits eine asp.net Seite geschrieben die ein Bild enthält durch welches man eine Liste erscheinen lassen kann. Darauf greife ich durch den Link zu.
Meine Grund Idee war einfach die das ich ein Popup (Bild) habe,
welches beim Klick darauf eine Liste von Begriffen bringt,
welche dann weiter verlinkt sein sollen.
Zudem will ich dieses Bild mit der auf und wieder zu gehenden Liste (durch 1 bzw. 2 mal klicken)
an mehreren Stellen in meiner Seite haben
und die Liste dann immer nur wieder mit anderen Begriffen füllen.
Also ein Popup, welches seinen Inhalt immer wieder dynamisch ändert,
je nachdem an welcher Stelle in der Seite es steht.
Ich weis ist ein bisschen kompliziert, aber ist es verständlich was ich machen möchte?
Hallo tani.
Danke für den Hinweis, sollte vielleicht mal in nem richtigen Editor und nicht nur im Notepad coden.
Mein Stichwort; ich empfehle dir Notepad2, du wirst diesen Editor zu schätzen wissen.
Einen schönen Freitag noch.
Gruß, Ashura
Danke werd ich gleich mal testen.
Kann es sein das die getElementsByName() nicht funktioniert, wenn mehrere Tabellen geschachtelt sind?
Weil ich hab das jetzt so wie es in meinem Testprogramm funktioniert hat in mein Orginalprogramm geschrieben und da geht es nicht mehr.
getElementById() wird dir entweder eine Referenz auf das eine Element dieser ID zurückgeben, oder "undefined", wenn die ID nicht existiert.
(Jein, sie gibt dann den Wert null zurück.)
Mathias
Also ich hab jetzt hinbekommen das es so läuft wie ich es gerne hätte. Nur akzeptiert es meine Schleife zum auslesen nicht ganz.
<html>
<head>
<titel> Test</titel>
<script type="text/javascript">
<!--
function load()
{
var Back = new Array();
for (var x = 0; x <= 1; x++)
{
document.getElementsByName("PopupLink")[x].src='http://localhost:1081/popup.aspx';
}
}
//-->
</script>
</head>
<body onLoad="load()">
<iframe name="PopupLink" src="frame1.htm" width="400" height="300"></iframe>
<iframe scrolling="no" frameborder="0" border="no" src="frame1.htm" ct="IF" style="width=150;height=100" id="MatrixLayoutRow.Cells.MatrixLayoutCell_GRFGMJXAND.Content.Iframe_NGRLVUWGPA" name="PopupLink"></iframe>
</body>
</html>
Also so lange die Größe des Endpunktes nicht höher liegt als die Anzahl der iframes mit dem Namen geht es, doch sobald ich eine höher eingebe kommt ein Fehler.
Daher die Frage wie kann ich das Array, wo ich durch document.getElementsByName("PopupLink")[x] bekomme auf die Länge überprüfen?
Hab es schon mit .length probiert das geht aber nicht, aufjedenfall nicht so wie ich es probiert habe.
Vielleicht muss ich es nur an eine andere Stelle setzen.