Hopefully this e-mail's format doesn't get butchered too badly, but
here's a function that walks down a DOM tree looking for a Node with
specific attribute value:

/**
 * startNode is the node to start searching from
 * criteria is the attribute name
 * value is the attribute value
 *
 ** isIE is a global variable that says whether or not IE is being used.
 ** IE has non-standard ...
 */
NodeUtils.getNode = function (startNode, criteria, value) {
  if (startNode.nodeType == Node.ELEMENT_NODE) {
    var attr = null;
    if (isIE && criteria == "class") {
      // try class
      attr = startNode.attributes["class"];
      if (attr == null) {
        // try className
        attr = startNode.attributes["className"];
      }
    } else {
      attr = startNode.attributes[criteria];
    }
    if (attr != null) {
      if (isIE && startNode.nodeName == "FORM" && criteria == "name"){
        if (startNode.attributes['name'].nodeValue == value) {
          return startNode;
        }
      } else {
        var attributes = attr.nodeValue.split(" ");
        for (var i = 0; i < attributes.length; i++)  {
          if (attributes[i] == value) {
            return startNode;
          }
        }
      }
    }
  }

  // Iterate children.
  var children = startNode.childNodes;
  for (var i = 0; i < children.length; i++) {
    // Check this child node to see if it meets the criteria
    var childSearch = NodeUtils.getNode(children[i], criteria, value);
    if (childSearch != null) {
      return childSearch;
    }
  }
}


So, with this function you could do something like:

var myForm = NodeUtils.getNode(document.documentElement, "name",
"myForm");

or 

var myForm = NodeUtils.getNode(document.getElementById("formDiv"),
"name", "myForm");



- Dave 

> -----Original Message-----
> From: Arash Bijanzadeh [mailto:[EMAIL PROTECTED]
> Sent: Sunday, June 26, 2005 5:00 AM
> To: Struts Users Mailing List
> Subject: javascript html:fprm and getElementById
> 
> Hi,
> I need to change the action of my form on the fly. I use the following
> javascript:
> function setParam(mode)
> {
> document.getElementById("myform").action ="<%=(String)
> request.getAttribute("origin")%>"
> + mode+ ".do";
> document.forms[0].submit();
> 
> }
> and my form is :
> <html:form action="<%=(String) request.getAttribute("origin")%>"
> styleId="myform" >
> 
> It works perfect under mozilla but not IE. I think the problem is that
IE
> looks for Id in the name field of form and he couln't find it.
> Could anyone help me?
> Regards
> ARash

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to