webForumDet fria alternativet

Fel element triggar javascript event

4 svar · 372 visningar · startad av mangan

manganMedlem sedan feb. 2003219 inlägg
#1

Hej!

Jag har fått ett litet problem, givetvis ;)

Använder följande kod för att sätta event handlers på mina fält

var customerFields= ['customer_number','customer_name','customer_contact','customer_email','customer_reference','customer_tracking'];

function initPage(){
    for(i=0;i<customerFields.length;i++){
        document.getElementById(customerFields[i]).onclick = editCustomer;
        document.getElementById(customerFields[i]).onfocus = editCustomer;
    }
}

Problemet uppstår sedan när jag triggar ett event genom att klicka på tex . elementet 'customer_number'. Då säger det event som inträffar att det är 'customer_tracking' som är källan till eventet. Detta kan jag inte alls förstå. Jag trodde att man kunde ha samma event handler på flera element, kan man inte det?

En sak till, om jag tar bort 'customer_tracking' från min elementarray så säger mitt event att det är 'customer_reference' som triggar mitt event osv. för varje jag plockar bort.

The_HulkMedlem sedan juni 20031 937 inlägg
#2

Vad gör editCustomer?
Tydligen är det i den funktikonen du får ditt fel.

manganMedlem sedan feb. 2003219 inlägg
#3

Hittade felet!
I min metod, editCustomer, så sparade jag det triggande elementet i variabeln 'elem'. Sen anropade jag en metod som ändrar klass på ett element och den använde sig också av en variabel som hette 'elem'. På så sätt så ändrades mitt orginalelement till det som användes i metoden jag anropade. Kan inte riktigt hur javascript hanterar scoop men nu förutsätter jag att alla variabler ligger i samma globala scoop vilket är ganska illa!

The_HulkMedlem sedan juni 20031 937 inlägg
#4

deklarerar du dina variabler innan du använder dem?

var test;
var test2;
manganMedlem sedan feb. 2003219 inlägg
#5

Nej, såg att jag inte hade gjort det. Läste att man måste deklarera variablerna med var för att få dom att vara lokala. Alltid lär man sig något! :)

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb