PDA

Pogčedajte punu verziju : Problem sa IE getElementsByAttribute


cvele
13. 02. 2007., 08:59
Dakle koristim getElementsByAttribute (skoro ista kao prototype ekvivalent) funkciju kako bih dosao do niza elemenata po njihovoj klasi i kasnije nesto radio sa njima.


ck = getElementsByAttribute(document.getElementById('re sult'), 'input', 'class', 'checkboxxxx');
i = 0;
y=0;
for(i=0;i<ck.length;i++) {
z++;
if (ck[i].checked == true) y++;
}

Posle ovoga u FF z i y vracaju normalne vrednosti dok u IE (6 i 7) z i y vracaju 0
Takodje sam pokusava i sa razinim drugim fjama (uglavnom is prototype biblioteke) za pribavljanje arr po class ali avaj...

getElementsByAttribute fja:

function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
var arrElements = (strTagName == "*" && document.all)? document.all : document.getElementsByTagName(strTagName);
var arrReturnElements = new Array();
var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
var oCurrent;
var oAttribute;
for(var i=0; i<arrElements.length; i++){
oCurrent = arrElements[i];
oAttribute = oCurrent.getAttribute(strAttributeName);
if(typeof oAttribute == "string" && oAttribute.length > 0){
if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
arrReturnElements.push(oCurrent);
}
}
}
return arrReturnElements;
}


Svaka pomoc/hint je dobrodosla.

Br@nkoR
13. 02. 2007., 13:47
Umesto:

oAttribute = oCurrent.getAttribute(strAttributeName);


Probaj sa:

oAttribute = oCurrent.getAttributeNode(strAttributeName).nodeVa lue;


Ili:

oAttribute = oCurrent.attributes.getNamedItem(strAttributeName) .nodeValue;

xippi
13. 02. 2007., 14:51
prototype ima getElementsByClassName f-ju. pogledaj
http://www.prototypejs.org/api/element#method-getelementsbyclassname

btw jquery verzija bi izgledala ovako:


var ck = $('#result .checkboxxxx');
var f = false;
for (var i = 0; i < ck.size(); i++) {
el = ck.get(i);
if (el.checked) {
f = true;
//uradi nesto
break;
}
}

cvele
13. 02. 2007., 15:51
znam da je ima ;) rekao sam da sam radio sa raznim fjama uglavnom iz prototype bibl., prvenstveno sam mislio na nju

cvele
14. 02. 2007., 10:27
zaboravih da napisem... idalje ne fercera

Br@nkoR
14. 02. 2007., 11:59
hmm..
ajde umesto gore navedenog reda, probaj:

oAttribute = (strAttributeName == 'class') ? oCurrent.className : oCurrent.getAttribute(strAttributeName);