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
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"));
Bookmarks