Click here to Skip to main content
11,798,866 members (73,992 online)
Rate this: bad
Please Sign up or sign in to vote.
See more: Javascript
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); 
Posted 1-Feb-13 22:24pm
Edited 2-Feb-13 19:39pm
Vyacheslav Voronenko at 2-Feb-13 4:30am
Do you have jsfiddle example for this?
Alternatively provide html part as well.
Member 8155312 at 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 at 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

Rate this: bad
Please Sign up or sign in to vote.

Solution 1

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

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

  Print Answers RSS
0 CPallini 505
1 OriginalGriff 503
2 Richard MacCutchan 321
3 Maciej Los 245
4 phil.o 244
0 OriginalGriff 2,270
1 Maciej Los 1,810
2 KrunalRohit 1,496
3 CPallini 1,425
4 Richard MacCutchan 1,109

Advertise | Privacy | Mobile
Web03 | 2.8.151002.1 | Last Updated 3 Feb 2013
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100