Verschobenes Feld
nimble
- javascript
Hi
Ich blick nicht mehr durch... aber hoffe einer von euch findet den Fehler...
Eigentlich wollte ich nur ein Verstecktes Feld generieren:
this.inputHidden = function(theCell)
{
newInput = document.createElement('<input name="'+theCell.getAttribute('option')+'" readonly>');
newInput.type = 'text';
newInput.value = theCell.innerHTML;
return newInput;
}
Zu versuchszwecken habe ich danach den Code auf ein readonlyelement abgeändert. Leider Werden die Felder bei der Ausgabe verschoben:
Das Ausgabeskript:
newInput = inmk.createCell(answer_cell);
answer_cell.appendChild(document.createTextNode(fields.getAttribute('option')));
answer_cell.appendChild(newInput); answer_cell.appendChild(document.createTextNode(newInput.getAttribute('name')));
ergibt volgende Ausgabe:$
user_id <Eingabefeld> user_id
Auftrag auftragauftrag
Logbuch log_id <Eingabefeld> auftrag
Kann mir nun jemand sagen, warum das Eingabefeld für Auftrag zum Logbuch runterrutscht?
vielen Dank im Voraus
THX
------------------------------
lieber ein Pinguin der läuft
als ein Fenster das hängt
------------------------------
Hi,
newInput = document.createElement('<input name="'+theCell.getAttribute('option')+'" readonly>');
aus dem nachfolgenden theCell.innerHTML schließe ich mal mutig, dass es sich bei theCell um eine DOM-Node innerhalb eines HTML-Dokumentes handelt. Kein mir bekanntes HTML-Element verfügt über ein option-Attribut.
Leider Werden die Felder bei der Ausgabe verschoben:
Die Ausgabe besteht aus CSS, welche auf eine HTML-Struktur wirkt. JavaScript ist hierzu irrelevant. Nenne den erzeugten HTML- sowie den CSS-Code, bzw. verlinke die Seite, auf der das Problem betrachtet werden kann.
Cheatah
Hi
aus dem nachfolgenden theCell.innerHTML schließe ich mal mutig, dass es sich bei theCell um eine DOM-Node innerhalb eines HTML-Dokumentes handelt. Kein mir bekanntes HTML-Element verfügt über ein option-Attribut.
Das schliesst du genau richtig. Das Feld Option wird vorher von mir gestetzt
Hier das ganze Script:
// Erstellung Tabelle
this.makeInputTable = function(root)
{
myform = document.createElement('form');
myform.action = 'input';
myform.target = 'status';
myform.method = 'post';
myform.setAttribute('id', 'bigform');
mytable = document.createElement('table');
mytablebody = document.createElement('tbody');
for(j = 0; j < root.firstChild.childNodes.length; j++)
{
mytablebody.appendChild(this.addRow(root.firstChild.childNodes[j], root.lastChild.childNodes[j]));
}
mytablebody.appendChild(this.submitButton());
mytable.appendChild(mytablebody);
mytable.className="table";
myform.appendChild(mytable);
return myform;
}
// Erstellung Zeile (Row)
this.addRow = function(titles, fields)
{
mycurrent_row = document.createElement('tr');
question_cell = document.createElement('td');
question_text = document.createTextNode(titles.text);
question_cell.appendChild(question_text);
question_cell.className = 'td';
mycurrent_row.appendChild(question_cell);
answer_cell = document.createElement('<td name="'+fields.text+'">');
answer_cell.setAttribute('inputtype', fields.getAttribute('inputtype'));
answer_cell.setAttribute('option', fields.getAttribute('option'));
answer_cell.setAttribute('id', 'newIn'+inId);
newInput = inmk.createCell(answer_cell);
answer_cell.appendChild(newInput);
answer_cell.appendChild(document.createTextNode(" "));
mycurrent_row.appendChild(answer_cell);
return mycurrent_row;
}
// Check welches Feld:
this.createCell = function(theCell)
{
switch (theCell.getAttribute('inputtype'))
{
case 'option.user':
case 'option.station':
case 'option.customer':
theInput = this.inputOption(theCell);
break;
case 'password':
theInput = this.inputPassword(theCell);
break;
case 'bigtext':
theInput = this.inputBigtext(theCell);
break;
case 'date':
theInput = this.inputDate(theCell);
break;
case 'chosebox':
theInput = this.inputChosebox(theCell);
break;
case 'hidden':
theinput = this.inputHidden(theCell);
break;
case 'hidden':
theInput = this.inputHidden(theCell);
break;
default:
theInput = this.inputText(theCell);
}
return theInput;
}
// Erstellen des Feldes
this.inputHidden = function(theCell)
{
newInput = document.createElement('<input name="'+theCell.getAttribute('option')+'" readonly>');
newInput.type = 'text';
newInput.value = theCell.innerHTML;
return newInput;
}
[...]verlinke die Seite, auf der das Problem betrachtet werden kann.
Wer das ganze mal live sehen will: geht [url=http://nimble.dyndns.info:8080/nmt@title:Hier] hin und meldet sich als ina/123 an. Das problem Tritt auf bei Pendenzen -> Neuer Eintrag
THX
Hi,
Das schliesst du genau richtig. Das Feld Option wird vorher von mir gestetzt
wenn Du mit JavaScript Daten an ein Objekt binden möchtest, kannst Du dies einfach in Form einer Objekteigenschaft tun. Es ist nicht nötig, HTML-Mechanismen zu triggern, bei denen Du von hinreichend günstiger Fehlerbehandlung abhängig bist.
Wer das ganze mal live sehen will: geht http://nimble.dyndns.info:8080/nmt@title:Hier hin und meldet sich als ina/123 an. Das problem Tritt auf bei Pendenzen -> Neuer Eintrag
Nachdem ich herausgefunden habe, wo interaktive Elemente sind und dass ich diese offenbar mit Doppelklick bedienen muss, bekomme ich eine Eingabemaske, nach der augenscheinlich nichts mehr passiert. Zusätzlich erhalte ich den JavaScript-Fehler, dass ActiveXObjekt nicht existiere. Leider kann ich Dein Problem so nicht untersuchen.
Cheatah
Hi
wenn Du mit JavaScript Daten an ein Objekt binden möchtest, kannst Du dies einfach in Form einer Objekteigenschaft tun. Es ist nicht nötig, HTML-Mechanismen zu triggern, bei denen Du von hinreichend günstiger Fehlerbehandlung abhängig bist.
Naja - es funktioniert so...
Nachdem ich herausgefunden habe, wo interaktive Elemente sind und dass ich diese offenbar mit Doppelklick bedienen muss, bekomme ich eine Eingabemaske, nach der augenscheinlich nichts mehr passiert. Zusätzlich erhalte ich den JavaScript-Fehler, dass ActiveXObjekt nicht existiere. Leider kann ich Dein Problem so nicht untersuchen.
Das ganue ist ein ziemlich komplexes Peojekt, da ist klar, dass du nicht auf anhieb die Funktionsweise verstehst. Weiter ist es auf IE ausgelegt, das ist der Grund warum du nichts erhältst.
PS: ich habe den Bösewicht unterdessen gefunden:
case 'hidden':
theinput = this.inputHidden(theCell);
break;
case 'hidden':
theInput = this.inputHidden(theCell);
break;
Diese Beiden einträge waren im Switch-Konstrukt enthalten, natürlich ist der obere falsch und musste rausgelöscht werden.
Was eine rauchpause mit Augenentspannenden fernguck bringt ;-)
THX
------------------------------
lieber ein Pinguin der läuft
als ein Fenster das hängt
------------------------------
Hi,
Naja - es funktioniert so...
das ist absolut bedeutungsfrei. Wichtig sind insbesondere zwei Kriterien:
1.) Es funktioniert _nicht_ (Ausschlusskriterium).
2.) Es ist richtig.
Den ersten Punkt hast Du zwar ausgeschlossen, aber den zweiten nicht erfüllt.
Das ganue ist ein ziemlich komplexes Peojekt, da ist klar, dass du nicht auf anhieb die Funktionsweise verstehst. Weiter ist es auf IE ausgelegt, das ist der Grund warum du nichts erhältst.
Ah. Dieses Detail hättest Du eventuell erwähnen sollen ... :-)
PS: ich habe den Bösewicht unterdessen gefunden:
[...]
Was eine rauchpause mit Augenentspannenden fernguck bringt ;-)
Jo :-)
Cheatah
Hi,
Was eine rauchpause mit Augenentspannenden fernguck bringt ;-)
Wie lang hast Du das Rauchen denn unterbrochen?
Offensichtlich lang genug, daß sich die Rauchschwaden verzogen haben und den Blick in die Ferne freigegeben haben ... ;-)
cu,
Andreas