• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Formularfeld mit Javascript richtig ansteuern?

wurzelchensen

Ingrid Marie
Registriert
13.05.06
Beiträge
265
Hallo Forum,

Ich versuche mittels Applescript und dem Befehl "do JavaScript" ein Webformular automatisiert ausfüllen zu lassen.

Auf folgender Seite: link
möchte ich das Formularfeld "Title *" mit einem beliebigen Text füllen können.

Ich habs mit folgendem Javascript Code versucht:
Code:
document.getElementsByTagName('ent_title').value = 'Apfel';
Leider funktioniert der von mir verwendete Javascript Code nicht!

Was könnte die richtige Lösung sein?

Besten Dank für eure Antworten im Voraus.
lg
W.
 

bezierkurve

Halberstädter Jungfernapfel
Registriert
12.06.05
Beiträge
3.860
Der Tag-Name ist nicht "ent_title", sondern "input". Du müsstest dir also erst mal alle Input-Elemente holen und daraus das raussuchen, das das Attribut name="ent_title" hat.
 

wurzelchensen

Ingrid Marie
Registriert
13.05.06
Beiträge
265
Der Tag-Name ist nicht "ent_title", sondern "input". Du müsstest dir also erst mal alle Input-Elemente holen und daraus das raussuchen, das das Attribut name="ent_title" hat.

Ok, danke bezierkurve!
Da ich aber keine Ahnung von Javascript habe, frag ich ob es nicht einfacher währe z.B. so was zu machen:
document.forms[0].elements[6].value = 'apfel'

Funktioniert das? Und wie weiss ich welches Feld welches Nummer hat --> forms[?].elements[?]
 

bezierkurve

Halberstädter Jungfernapfel
Registriert
12.06.05
Beiträge
3.860
Moinsen. Ich würde es folgendermaßen machen:

Code:
var inputs = document.getElementsByTagName('input'); 
for (var i = 0; i < inputs.length; i++) { 
	if (inputs[i].getAttribute('name') == 'ent_title') {
		inputs[i].value = 'Apfel';
	}
}

Dein Ansatz geht zwar auch, ist aber nicht so robust gegenüber eventuellen Änderungen auf der Seite.
 
  • Like
Reaktionen: wurzelchensen

Alecco

Transparent von Croncels
Registriert
17.02.09
Beiträge
306
Kann man dafrü nicht die "jquery" verwenden?
 

MasterofDistres

Kleiner Weinapfel
Registriert
07.12.06
Beiträge
1.139
Ja kannst du, geht sogar ziemlich einfach - du gibst dem Element am besten eine bestimmte ID und ändert dann mit
Code:
$("#id-name").val("neuer Wert");
den Wert ;)
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
warum nicht über ne id ansteuern?
<form id="name"><input name="input1">...</form>
Code:
document.getElementById('name').input1.value='test';
?

damit kann man dann auch in JS mehr realisieren zb:

function func(form){
//mach irgendwas damit zb:
form.input1.value='55';
}

aufgerufen mit: func(document.getElementById('name'))

auch das senden per Ajax oder Aufruf von PHP Dateien ist so wesentlich einfacher.
 

wurzelchensen

Ingrid Marie
Registriert
13.05.06
Beiträge
265
Moinsen. Ich würde es folgendermaßen machen:

Code:
var inputs = document.getElementsByTagName('input'); 
for (var i = 0; i < inputs.length; i++) { 
	if (inputs[i].getAttribute('name') == 'ent_title') {
		inputs[i].value = 'Apfel';
	}
}

Dein Ansatz geht zwar auch, ist aber nicht so robust gegenüber eventuellen Änderungen auf der Seite.

Ist auf jeden Fall besser als mein Ansatz, Danke!

Wieso nicht über
Code:
document.getElementsByName()
?

Wieso nicht einfach ... :) Danke, das hab ich gesucht!

Ich bin absoluter Anfänger und Autodidakt, was Javascript und Programmieren im allgemeinen angeht.
Ihr könnt euch vorstellen wie froh ich bin, dass nun alles klappt und mein schönes Formular füllt sich jetzt von selbst aus :)

Danke auch allen anderen die geholfen haben!

Hoffe die Mac Community bleibt so stark wie immer ...
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Den Ansatz über document.getElementsByName() würde ich nicht empfehlen, da man somit kein Formularobjekt an eine Funktion übergeben kann.

gib lieber dem Formular eine eindeutige id, dann kannst du es direkt über document.getElementById() ansprechen und hast da kein array.

Kannst aber auch die Tipps hier verwenden http://de.selfhtml.org/javascript/objekte/forms.htm
der Weg über getElements ist immer etwas blöde und bringt dich im späteren Verlauf auch nicht wirklich weiter, spätestens bei Ajax bekommste dann Probleme, da du eine allgemeine Funktion nicht auf jedes Formular anwenden kannst.