Click here to Skip to main content
15,867,990 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have a simple html form with one number input and two select boxes. I'm trying to practice some object methods of javascript to create a unit converter. My js code is as follows. It gives a constant error of "uncaught reference : fromUnit undefined". This error comes for both select box references.

Js Bin code view link : http://jsbin.com/ubeqex/2/edit[^]


JavaScript
var unitConvert = {
   
    //get values from the htmlform:
    fromLength:  document.getElementById('fromLength'), //;.value,
    toLength: document.getElementById('toLength').value,
    fromUnit: document.getElementById('fromUnits'),
    toUnit: document.getElementById('toUnits').selectedIndex,
   

unitLength: function() {
     
    
        console.log("in function");
         console.log(fromLength.value);  //this works fine.
         console.log(fromUnit);  //this gives error. IF I can access fromLength,   
         console.log(toUnit);  //this gives error. why not these two?
        
}
};

function addEvent(obj, type, fn) {
   if(obj && obj.addEventListener) {
       obj.addEventListener(type,fn,false);
   } else if( obj && obj.attachEvent) {
       obj.attachEvent('on' + type, fn);
   }
}
    
window.onload = function() {
   'use strict';
   
   
    var fromUnit = document.getElementById('fromUnits');
    var toUnit = document.getElementById('toUnits').selectedIndex;
    
   addEvent(fromLength, 'change', unitConvert.unitLength); //this works fine.        addEvent(fromUnit, 'change', unitConvert.unitLength);  
   addEvent(toUnit, 'change', unitConvert.unitLength); 
   }   
Posted
Updated 2-Feb-13 19:39pm
v2
Comments
Vyacheslav Voronenko 2-Feb-13 4:30am    
Do you have jsfiddle example for this?
Alternatively provide html part as well.
Member 8155312 3-Feb-13 1:41am    
I have pasted my code on JS Bin. The link is : http://jsbin.com/ubeqex/2/edit
Thank you for looking at my code. Though I have changed it a little bit than original one.
Vyacheslav Voronenko 3-Feb-13 2:47am    
Code means that my suggestion below is right. You are lucky that your input is called fromLength.

Study a bit

https://developer.mozilla.org/en-US/docs/DOM_Client_Object_Cross-Reference/DOM_Events
https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener

Play a bit with the debugger.

1 solution

I think, you are not in context of unitConvert variable, when event get's called.

Moover, From code it looks fromLength is some global variable, at least I do not see it's initialization

JavaScript
addEvent(fromLength, 'change', unitConvert.unitLength); //this works fine.


As this is global variable, your code works fine

JavaScript
console.log(fromLength.value);  //this works fine
.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900