Click here to Skip to main content
15,668,517 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 :[^]

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) {
   } 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); 
Updated 2-Feb-13 19:39pm
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 :
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

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

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

As this is global variable, your code works fine

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