MelittaMedlem sedan sep. 2003448 inlägg 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å..
BTW: Sidan fungerar perfekt i IE
Finns det nått sätta att lösa detta på?
spangoMedlem sedan juni 20008 205 inlägg 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 ;)
MelittaMedlem sedan sep. 2003448 inlägg Nej jag har testat i både opera 7.23 och senaste Firefox..
Peter SMedlem sedan dec. 20025 483 inlägg 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.
:)
MelittaMedlem sedan sep. 2003448 inlägg // 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..
Peter SMedlem sedan dec. 20025 483 inlägg 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.
Posta gärna tillhörande HTML-kod också.
:)
MelittaMedlem sedan sep. 2003448 inlägg <form action="function_add_banner.asp" method="post" name="banner" id="banner" style="margin:0px; padding:0px; " onsubmit="false()">
<p style="float:none;width:308px;"><a href="javascript:setfocus('bannerurl');">Adress till din knapp:</a>
<input name="bannerurl" type="text" onfocus="this.style.borderColor = '#999999';" onblur="this.style.borderColor = '#dadada';" />
<input type="button" name="Button" value="Kontrolera." onclick="document.prewiev.src=document.banner.bannerurl.value;" onfocus="this.style.borderColor = '#999999';" onblur="this.style.borderColor = '#dadada';" style="margin-left:10px; "/>
</p>
<p><a href="javascript:setfocus('alt');">Alt text för din knapp:</a> <input name="alt" type="text" id="alt" onfocus="this.style.borderColor = '#999999';" onblur="this.style.borderColor = '#dadada';"/></p>
<p><a href="javascript:setfocus('url');">Din hemsidas adress:</a> <input name="url" type="text" id="url" onfocus="this.style.borderColor = '#999999';" onblur="this.style.borderColor = '#dadada';"/></p>
<p><a href="javascript:setfocus('mail');">Din E-Post adress:</a> <input name="mail" type="text" id="mail" value="@" onfocus="this.style.borderColor = '#999999';" onblur="this.style.borderColor = '#dadada';"/></p>
<p><a href="javascript:setfocus('namn');">Ditt namn:
</a> <input name="namn" type="text" id="namn" onfocus="this.style.borderColor = '#999999';" onblur="this.style.borderColor = '#dadada';"/></p>
<p>
<input name="send" type="button" id="send" onclick="validate();" value="Skicka." onfocus="this.style.borderColor = '#999999';" onblur="this.style.borderColor = '#dadada';"/></p>
</form>
Nu har jag fått det att funka med en grymt bantad version, men det skulle vara skoj att veta vad som är fel med denna :)
Peter SMedlem sedan dec. 20025 483 inlägg 1. setFocus() anropas med 'bannerurl' som inte innehas av något element som id.
2. När jag trycker på "Skicka" anropas checkerr() med ett argument obj som inte existerar i den globala namnrymden (utanför funktionen i fråga).
3. onsubmit="false()", vad gör den raden? false är en boolesk konstant och ingen funktion.
För att kunna gå vidare med felsökningen är det bra om du kan svara på vad checkerr() får för in-parametrar.
:)
MelittaMedlem sedan sep. 2003448 inlägg <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.
Peter SMedlem sedan dec. 20025 483 inlägg Det kan nog vara en bra idé att göra.
;)
MelittaMedlem sedan sep. 2003448 inlägg Då gör jag så, har ändrat lite i det nu men du kan ju se om du får det att funka, vore guld :)
Fått det till att hänga browsern nu iaf *skrattar*
MelittaMedlem sedan sep. 2003448 inlägg Ingen som har nån lösning?
Peter SMedlem sedan dec. 20025 483 inlägg Jag har gjort några ändringar. Se den bifogade filen.
:)
MelittaMedlem sedan sep. 2003448 inlägg Super :) Tyvär så markerar han inte rätt fällt om tomt bara :/, ska se om jag kan ordna d..