Hur fungerar getelementbyid i olika webbläsare?
Jag har en for loop och i den måste jag nå värden vissa textelement på sidan, jag har försökt med detta:
document.getElementById(col_array[part_num])
col_array[part_num] innehåller namnen på objeckten jag försöker nå..
Vilka webbläsare är det det inte funkar i? Försöker du med NS4 är det inte så konstigt om det inte funkar, eftersom den är ett antal år äldre än spec:en för HTML DOM ;)
Har du något icke-fungerande exempel att visa oss? När du skriver att col_array[part_num] innehåller namnen på objekten, menar du då värdena på deras name-attribut? document.getElementById avser värdet på id-attributet.
// Henrik Danielsson 2003-2004
function checkerr(frm,obj,valid,err,nfo) {
var varerr = ''
var ref = ''
var col_array=obj.split(",");
var valid_array=valid.split(",");
var err_array = err.split("*")
var part_num=0;
while (part_num < col_array.length) {
switch(valid_array[part_num]) {
case "url": {
if (document.getElementById(col_array[part_num].name).value.search(/^http/) == -1) {
if (ref == 0) {
ref = col_array[part_num].name; }
else {
ref = ref + ' ' + col_array[part_num].name; }
if (varerr == 0) {
varerr = ' ' + err_array[part_num].name; }
else {
varerr = varerr + '\n ' + err_array[part_num].name; }
}
break;
}
case "mail": {
if (document.getElementById(col_array[part_num].name).value.search(/^[A-Za-z0-9_\-\.]+@[^ ]+\.[A-Za-z]{2,4}$/) == -1) {
if (ref == 0) {
ref = col_array[part_num].name; }
else {
ref = ref + ' ' + col_array[part_num].name; }
if (varerr == 0) {
varerr = ' ' + err_array[part_num].name; }
else {
varerr = varerr + '\n ' + err_array[part_num].name; }
}
break;
}
case "text": {
if (eval(document.getElementById(col_array[part_num].name).value.length) == 0) {
if (ref == 0) {
ref = col_array[part_num].name; }
else {
ref = ref + ' ' + col_array[part_num].name; }
if (varerr == 0) {
varerr = ' ' + err_array[part_num].name; }
else {
varerr = varerr + '\n ' + err_array[part_num].name; }
}
break;
}
}
part_num+=1;
}
hiinp(ref,frm);
dowhat(varerr,frm,nfo);
}
function hiinp(ref,frm) {
for (i = 0; i < frm.elements.length - 1; i++) {
frm.elements[i].name.style.borderColor = '#f6f6f6';
frm.elements[i].name.style.backgroundColor = '#fbfbfb';
}
if (ref.length>0){} {
var ref_array = ref.split(' ');
if (ref_array.length>0){
var part_num=0;
while (part_num < ref_array.length)
{
document.getElementById(ref_array[part_num].name).style.borderColor = '#FFCACB';
document.getElementById(ref_array[part_num].name).style.color = '#666666';
document.getElementById(ref_array[part_num].name).style.backgroundColor = '#fbfbfb';
if (part_num == 0){
document.getElementById(ref_array[part_num].name).focus();
document.getElementById(ref_array[part_num].name).style.borderColor = '#ff0000';
document.getElementById(ref_array[part_num].name).style.color = '#333333';
document.getElementById(ref_array[part_num].name).style.backgroundColor = '#ffffff';
}
part_num+=1;
}}
}
}
function dowhat(varErr,frm,nfo) {
if(varErr.length > 0) {
alert('En del fel påträffades:\n' + nfo + '\n' + varErr);
return false;
}
else {
document.getElementById('send').value = 'Vg vänta..';
document.getElementById('send').disabled = 'disabled';
frm.submit();
return true;
}
}
function setfocus(obj) {
document.getElementById(obj).focus();
}
Kallar på denna funktion igenom:
<script type="text/javascript">
function validate() {
var frm = 'minform'
var objects = 'bannerurl , alt , url , mail , namn';
var valid = 'url,text,url,mail,text'
var err = 'Felaktig bannera adress.*Ingen alt text*Felaktig url*Felaktig mail*Inget namn'
var nfo = 'För att kunna slutföra förfrågan \nmåste du rätta nedanstående fel.\n'
checkerr(frm,obj,valid,err,nfo);
}
</script>
Detta är mitt första javascript så skratta int eåt mig nu om jag gjort allt totalt fel..
Som sagt, document.getElementById() tar en sträng avseende ett elements id som in-parameter.
Jag kan tänka mig att ditt exempel fungerar i IE eftersom ett anrop med ovanstående funktion fungerar med ett argument som syftar till såväl ett elements id som namn.
<script type="text/javascript">
function validate() {
var frm = 'minform'
var objects = 'bannerurl , alt , url , mail , namn';
var valid = 'url,text,url,mail,text'
var err = 'Felaktig bannera adress.*Ingen alt text*Felaktig url*Felaktig mail*Inget namn'
var nfo = 'För att kunna slutföra förfrågan \nmåste du rätta nedanstående fel.\n'
checkerr(frm,obj,valid,err,nfo);
}
</script>
Valideringen eller den "stora" koden ligger i en egen js fil, detta ocanför ligger i samma fil som formen, när dutrycker skicka startar validate, sätter värdena på object och så visare, där efter startar checkerr..
Vet inte om det gjorde det lite klarare, men som sagt, detta är mitt första script och jag har googlat mig fram till det mesta..
Kan posta båda filerna om du vill.