<form>-Eigenschaft aus Script innerhalb des <form> ändern?
    
Bachsau
    
    
      
    
  - javascript
 nicht angemeldet
 nicht angemeldetAlso, folgendes ist Sache:
<form id="editform" name="editform" method="post" action="/w/index.php?title=Seite&action=submit" enctype="multipart/form-data">  
  
<script type="text/javascript">document.forms.editform.onsubmit = function(event)  
{  
	return MySubmitForm();  
}  
function MySubmitForm()  
{ //usw...</script>
Geht auch soweit wunderbar. Blöd is' nur, dass sich die Bezeichnung "editform" ändern kann, weil das Script-Element aus einem Addon-Widget kommt (das ich gerade schreibe), das <form> aber aus verschiedenen Templates der Software.
Jetzt ist die Frage, was ich anstelle von document.forms.editform. einsetzen könnte, um relativ auf das übergeordnete <form> zuzugreifen, egal wie es heißt und welche id es hat.
Jetzt ist die Frage, was ich anstelle von document.forms.editform. einsetzen könnte, um relativ auf das übergeordnete <form> zuzugreifen, egal wie es heißt und welche id es hat.
Das hatte ich gerade in einem anderen Forum:
  
function prevElement(name) {  
    var script = document.getElementsByTagName('script');  
    var me = script[script.length-1];  
    name = name.toLowerCase();  
    return (function(obj) {  
        if(!obj) return null;  
        var n = obj.nodeName.toLowerCase();  
        if(n == name) return obj;  
        if(n == 'body') return null;  
        if(obj.previousSibling) return arguments.callee(obj.previousSibling, name);  
        return null;  
    })(me.previousSibling);  
 }  
var form = prevElement('form');  
alert(form);  
Struppi.
Hi,
Jetzt ist die Frage, was ich anstelle von document.forms.editform. einsetzen könnte, um relativ auf das übergeordnete <form> zuzugreifen, egal wie es heißt und welche id es hat.
Das hatte ich gerade in einem anderen Forum:
function prevElement(name) {
var script = document.getElementsByTagName('script');
var me = script[script.length-1];
name = name.toLowerCase();
return (function(obj) {
if(!obj) return null;
var n = obj.nodeName.toLowerCase();
if(n == name) return obj;
if(n == 'body') return null;
if(obj.previousSibling) return arguments.callee(obj.previousSibling, name);
return null;
})(me.previousSibling);
}
var form = prevElement('form');
alert(form);
  
Abgesehen davon, dass ich „auf das übergeordnete <form> zuzugreifen“ hier eher so verstanden habe, dass das Script-Element ein Nachfahre des Formulars sein soll, und deshalb nicht die previousSiblings, sondern parentNodes zu betrachten wären: Ich werde wohl nie verstehen, warum manche Leute für sowas Rekursion bemühen, wenn's doch auch eine einfache while-Schleife tut, und man sich den Stack-Overhead damit sparen kann.  
  
MfG ChrisB  
  
-- 
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
Abgesehen davon, dass ich „auf das übergeordnete <form> zuzugreifen“ hier eher so verstanden habe, dass das Script-Element ein Nachfahre des Formulars sein soll, und deshalb nicht die previousSiblings, sondern parentNodes zu betrachten wären: Ich werde wohl nie verstehen, warum manche Leute für sowas Rekursion bemühen, wenn's doch auch eine einfache while-Schleife tut, und man sich den Stack-Overhead damit sparen kann.
Stimmt. Kann sein, dass ich in letzter Zeit zuviele closures gebaut habe, dass ich geglaubt habe nicht mehr damit auszukommen ;-)
Das kann ich natürlich nicht so stehen lassen:
function parentElement(name) {  
    var script = document.getElementsByTagName('script');  
    var me = script[script.length-1];  
    name = name.toLowerCase();  
    var node = me.parentNode;  
    while(node) {  
        var n = node.nodeName.toLowerCase();  
        if(n == name) return node;  
        node = node.parentNode;  
    }  
    return null;  
}  
  
var form = parentElement('form');  
alert(form);  
Struppi.