Toon posts:

[js] formskinner heeft bizarre nevenwerking

Pagina: 1
Acties:

Verwijderd

Topicstarter
de situatie:

Ik heb een site die uit frames bestaat (boven=titelbalk, links=menu, rechts=main). Nu heb ik op een van mijn pagina's een formskinner gezet (om radiobuttons te veranderen in .png). dat script doet het perfect, maar elke keer ik naar die pagina ben geweest en klik in de menu op een andere link dan opent hij die in een nieuwe window. Dat is dus niet de bedoeling, ze moet openen in de 'main'. Het is ook alleen maar als je eerst naar de pagina gaat met de formskinner.

Weet iemand wat hier de reden voor is?

formskinner wordt hiermee ingelezen:
<SCRIPT language="JavaScript" src="formskinner.js"></SCRIPT>

formskinner wordt hiermee geladen:
<body onLoad="formSkinner()">

formskinner.js code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// define regular expressions
inputreg=new RegExp('(<INPUT.+?type=)(\"|\'|)(.+?)(\"|\'| |)( .+?>|>)','ig');
namereg=new RegExp('name=(\"|\'|)(.+?)(\"|\'| |>)','i');
valuereg=new RegExp('value=(\"|\'|)(.+?)(\"|\'| |>)','i');
checkedreg=new RegExp('checked','i');

radiobuttongroups=new Array();

/*********************************
 * Skinned Radiobutton Functions
 *********************************/
function SRset() {
  this.parent.group.set(this.parent.value);
}

function SkinnedRadiobutton(value,group) {
  this.value=value;
  this.group=group;
}

function SRGadd(value) {
  this.radiobuttons[this.id+value]=new SkinnedRadiobutton(value,this);
}

function SRGreset() {
  this.set(this.startvalue);
}

function SRGset(value) {
  if (this.finalized) {
    if ( this.value!=value ) {
      if ( value!="" ) {
        if ( this.value!="") this.radiobuttons[this.id+this.value].image.src='radiobutton_off.png';
        this.radiobuttons[this.id+value].image.src='radiobutton_on.png';
      } else {
         this.radiobuttons[this.id+this.value].image.src='radiobutton_off.png';
      }
    }
    this.input.value=value;
  }
  this.value=value;
}

function SRGfinalize() {
  for ( rbname in this.radiobuttons ) {
    this.radiobuttons[rbname].image=document.getElementById(rbname+'Img');
    if ( this.value==this.radiobuttons[rbname].value ) {
      this.radiobuttons[rbname].image.src='radiobutton_on.png';
    }
    this.radiobuttons[rbname].image.parent=this.radiobuttons[rbname];
    this.radiobuttons[rbname].image.onclick=SRset;
  }
  this.input=document.getElementById(this.id+'Inp');
  this.input.value=this.value;
  this.finalized=true;
}

function SkinnedRadiobuttonGroup(id) {
  this.id=id;
  this.value="";
  this.startvalue="";
  this.radiobuttons=new Array();
  this.finalized=false;
}

SkinnedRadiobuttonGroup.prototype.addRadiobutton=SRGadd;
SkinnedRadiobuttonGroup.prototype.reset=SRGreset;
SkinnedRadiobuttonGroup.prototype.set=SRGset;
SkinnedRadiobuttonGroup.prototype.finalize=SRGfinalize;

function makeSkinnedRadiobuttonGroup(id) {
  radiobuttongroups[id]=new SkinnedRadiobuttonGroup(id);
}

/*********************************
 * Start skin
 *********************************/
function formSkinner() {
  forms=document.getElementsByTagName('FORM');
  for ( var i=0;i<forms.length;i++ ) {
    while ( matcharray=inputreg.exec(forms[i].innerHTML) ) {
      name="";
      //alert( matcharray[0] );
      if ( namereg.test(matcharray[0]) ) name=namereg.exec(matcharray[0])[2];
      if ( matcharray[3]=='radio' ) {
        // Skin Radiobuttons
        value=valuereg.exec(matcharray[0])[2];
        if ( !radiobuttongroups[name] || radiobuttongroups[name]=='undefined') {
          forms[i].innerHTML=forms[i].innerHTML.replace(matcharray[0],'<INPUT type="hidden" name="'+name+'" value="" id="'+name+'Inp">[img]"radiobutton_off.png"[/img]');
          makeSkinnedRadiobuttonGroup(name);
        } else {
          forms[i].innerHTML=forms[i].innerHTML.replace(matcharray[0],'[img]"radiobutton_off.png"[/img]');
        }
        radiobuttongroups[name].addRadiobutton(value);
        if ( checkedreg.test(matcharray[0]) ) {
          radiobuttongroups[name].set(value);
          radiobuttongroups[name].startvalue=value;
        }
      } 
    }
  }
  initEvents();
}

/*********************************
 * Finalize skin
 *********************************/
function initEvents() {
  var dummy=null;
  var dummyarray=new Array();

  for ( rbgname in radiobuttongroups ) {
    radiobuttongroups[rbgname].finalize();
  }

}


De geintresseerden hebben ineens een scriptje om radiobuttons mooi te maken :P

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 26-08 16:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

hmm, mijn sticky helpt blijkbaar niet echt veel :(
HTML, JavaScript en Flash topics

PW -> WG

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.