www.webdeveloper.com
Results 1 to 4 of 4

Thread: get All elements that begins with a specific name

  1. #1
    Join Date
    Nov 2007
    Posts
    18

    get All elements that begins with a specific name

    Hi all,

    Is there a way to get all document elements that begins with a specific name

    I have
    Code:
      <input type='text' name='xqty_1' /><BR>
      <input type='text' name='xqty_2' /><BR> 
      <input type='text' name='xqty_3' /><BR>                                            
      <input type='button'  value='Click' />
      <input type='button' name ='kick1' value='Click1' />
      <input type='button' name ='kick2' value='Click2' />
    I want to get all elements that begins with 'xqty_'.
    I am using the following in my js file but with no success!!!!!!
    Code:
    var myTextField = document.getElementsByTagName("xqty_");

    Any Idea or suggestion and Thanks in advance

  2. #2
    Join Date
    Aug 2009
    Posts
    30
    HTML Code:
    document.getElementsByTagName("p")
    getElementsByTagName does exist but not in the way you used it.
    By handing over an existing html tag like p,span,a,div etc. it returns an object containing any element that is of this type

    what you need is a function that runs through all the existing objects, checking wether they meet your requirements of having a certain attribute set and this value matching a certain pattern

    so i went this way:

    Code:
    	Object.prototype.get_whatever_by_whatever = function (object_type,attribute,condition){
    		var all = this.getElementsByTagName(object_type); // select all elements that have the TagName object_type and are children of the element you uses this method on
    		var res = []; // preparing result array
    		condition = new RegExp(condition);//transforming condition into a real regular expression
    		for (var i=0; i<all.length; i++){ // do the following for all found elements
    			var obj = all[i]; // assignment is just done to avoid dynamic attribute addressing issues with IE...hope it helps
    			if (obj.nodeType==1 && obj[attribute]!=undefined && obj[attribute].match(condition))res.push(obj); //any object of the certain type whose certain attribute matches the given condition is added to the result
    		}
    		return res;//result array is returned
    	};
    
    var my_objects = documnet.get_whatever_by_whatever("span","className","active"));
    you can call get_whatever_by_whatever on any htmlobject in javascript

    Code:
    var my_objects = document.getElementElementById("id").get_whatever_by_whatever("span","className","active"));
    ^^that should work as well, this way you limit the amount of checked items

    the first parameter always is the tag type of objects you are looking for
    put a "*" for any kind of tags or as i did a "span" to just search span elements
    in your case "input" would work as well

    the second parameter is the attribute you want to match on this could be any attribute you want name, id, className, style, title, href, etc

    just be aware of how to call a class .. since "class" is reserved in Javascript you need to use "className"

    the third one then is a bit tricky: there you pass a string but it is handled as an regular expression
    by setting "active" as condition the method would return any objects whose selected attribute contains the pattern "active" ie: "inactive" or "blablaactiveblabla"

    to limit your search exactly you would need to use regular expression features
    in your case the condition would be "^xqty_" where the ^ ensures that the function only returns objects whose selected attribute is starting witzh "xqty_"

    for more information check any regular expression tutorial

    i hope it meets your requirements

    not yet tested in ****ing IE

    cu huckepick
    Real power can't be given. It must be taken.

  3. #3
    Join Date
    Nov 2007
    Posts
    18
    This isn't what I need excatly
    What I meant is getElementsByName Not getElementsByTagName

    I want to capture all elements that begins with a specified string

    so if I have some elements name begin with ("xqty_") I need to return all elements therefore xqty_1, xqty_2 and xqty_3
    Code:
    <html>
    <head>
    <script type="text/javascript">
    function getElements()
    {
    var x=document.getElementsByName("xqty_");
    alert(x.length);
    }
    </script>
    </head>
    
    <body>
    <input name="xqty_1" type="text" size="20" /><br />
    <input name="xqty_2" type="text" size="20" /><br />
    <input name="xqty_3" type="text" size="20" /><br />
    <input name="input_4" type="text" size="20" /><br />
    <br />
    <input type="button" onclick="getElements()" value="How many elements names begins with 'xqty_'?" />
    </body>
    this Must return 3 But not working with me
    Any Suggestion or idea
    Thanks

  4. #4
    Join Date
    Aug 2009
    Posts
    30
    as i tried to explain, there is no getElementsByName function that looks for a pattern

    if you have three boxes with the same name "xqty" the getelementsByName("xqty") will get you these three

    but you are looking for a PARTIALLY MATCHING PATTERN because your names are not identic

    this is why i offered you a method that would do exactly that: looking for objects whose name starts with "xqty_"

    only with my function you can reduce the search radius by selecting a special object to start from, you can choose which attribute you want to search "name", "id", "className" etc and you would also be able to find elements whose attributes do match much more complex expressions or attributes that end in a certain pattern

    i understood what you want and i gave you a lot more so try to understand this solution and use

    Code:
    var my_objects = document.get_whatever_by_whatever("input","name","xqty"));
    cu
    huckepick
    Real power can't be given. It must be taken.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles