www.webdeveloper.com
Results 1 to 6 of 6

Thread: Very new to Javascript

  1. #1
    Join Date
    Jun 2013
    Posts
    4

    Question Very new to Javascript

    Hello,

    I'm trying to use Javascript to enhance a few features of my site.
    I've wrote a fewlines that will convert two textboxes between cm and inches interchangeably.

    However, I would also like to round the result to make it easier to read.

    i.e. Entering Inches = 1.4
    Yields cm = 3.5559999999999996
    Whereas it should really read cm = 3.556, or even 3.56

    In the code below I tried changing the line

    Code:
    ONKEYUP="document.convert.ins.value = (1/2.54) * document.convert.cms.value" 
    
    to
    
    ONKEYUP="document.convert.ins.value = Math.round((1/2.54) * document.convert.cms.value)"
    Here's my code:

    Code:
     <FORM ACTION="#" NAME="convert" >
    Enter Inches
    <INPUT TYPE=TEXT NAME="ins"
        ONKEYUP=" document.convert.cms.value = 2.54 * document.convert.ins.value" 
    	
    	>
    <BR><BR>
    <INPUT TYPE=TEXT NAME="cms" 
        ONKEYUP="document.convert.ins.value = (1/2.54) * document.convert.cms.value" 
    
    	>
    centimetres
    </FORM>
    Thanks in advance!

  2. #2
    Join Date
    Oct 2010
    Location
    Versailles, France
    Posts
    1,264
    To work with numbers use
    Code:
    var rndValue=math.round(100*value)/100;
    But to build a string prefer :
    Code:
    var rndString=value.toFixed(2);

  3. #3
    Join Date
    Jun 2013
    Posts
    4
    Quote Originally Posted by 007Julien View Post
    To work with numbers use
    Code:
    var rndValue=math.round(100*value)/100;
    But to build a string prefer :
    Code:
    var rndString=value.toFixed(2);
    Thanks for the help, but I'm still too new to work that out. I've tried it in numerous places inside my code, but I can't get it to work sorry.

  4. #4
    Join Date
    Jun 2013
    Posts
    4
    Thanks, I've solved it now.

  5. #5
    Join Date
    May 2006
    Location
    Somewhere behind your screen
    Posts
    1,648
    a hint: if Julien saw your code the help could be much more efficient
    xxx: Guess Buddhist riddle: "What is the sound of one hand clapping?"
    yyy: facepalm

  6. #6
    Join Date
    Sep 2007
    Posts
    315
    Code:
     
    <html>
    <head>
    
    <script type="text/javascript">
    // http://www.webdeveloper.com/forum/showthread.php?279263-Very-new-to-Javascript
    // http://www.w3schools.com/jsref/jsref_unshift.asp
    // http://www.w3schools.com/jsref/jsref_obj_array.asp
    // http://www.w3schools.com/jsref/jsref_obj_string.asp
    // http://www.w3schools.com/jsref/jsref_charat.asp
    // http://www.w3schools.com/jsref/jsref_obj_regexp.asp
    
    
    
    // çarpma işlemi
    // multiplication
    
    // çarpma işlemini yapmaya başlayalım
    
    function multiplication(num, num2, dec) { 
    // alert(' baştaki dec = '+dec);
    // dizilerin eleman sayıları aynı değilse, dizinin baş kısmına 0 ekleyerek, eleman sayılarını aynı yapalım.
    while(num.length > num2.length) { num2.unshift(0); }
    while(num2.length > num.length) { num.unshift(0); }
    
    var netice = [];
    var i, k, t, basamak, elde = 0, L = num.length -1;
    for(i=L; i>=0; i--)  {
    basamak = elde;
     
     t=i;
    for(k = L; k>=i; k--) {
     basamak += num[k] * num2[t]; 
     t++;
     }
    if(basamak>9) { elde =   parseInt(basamak/10);   netice.unshift(basamak % 10); }
    if(basamak < 10) { elde = 0; netice.unshift(basamak) ; }
    }
    
    var p, r = L - 1, u = r, y;
    for( p= r; p >=0; p--) {
    y=p;
     basamak = elde;
      for( m = 0; m<=p; m++) {
     basamak += num[m] * num2[y];  y--;  
    }
    
    if(basamak>9) { elde =   parseInt(basamak/10);  netice.unshift(basamak % 10); }
    if(basamak < 10) { elde = 0; netice.unshift(basamak) ; }
    
    }
    
    if(elde > 0) { 
    netice.unshift(elde); 
    }
    // dizide hangi sayıdan önce nokta olması gerektiğini belirleyelim.
    if(dec > 0 ) {  var say = netice.length - dec;  netice[say] =  '.'+ netice[say]; }
    
    // diziyi stringe çevirelim. Baş kısımda 0 var ise bunları atalım.
    var s = netice.join('').replace(/^0+/,'');
    //alert('s = '+ s); 
    return s;
    
    }
    
    
    
    function bul() {
    
    var el = document.convert.ins.value;
    
    // metin kutusuna sayı girip girmediğini kontrol edelim
    var re = /^\d+(\.\d+)?$/;
    // alert(re.test(el));
    if(re.test(el)== false) { alert('enter a number  (1.4  or 14 )'); return false;}
    
    var A = []; // bu dizinin içine, metin alanına girilen sayıyı yerleştireceğiz
    
    var dec=0; // ondalık basamak sayısı
    var i;
    
    
     for( i=0; i<el.length; i++) { 
      if(el.charAt(i) != '.') { A[A.length] =  el.charAt(i); }
      if(el.charAt(i) == '.'){ dec = el.length - (i+1); }
     }
    //alert('A =  '+A);
    //alert('dec = '+dec);
    var B = [2,5,4]; // 2.54 sayısındaki rakamları sırayla dizi içine yerleştirdik
    dec = dec + 2 ; // 2.54 sayısında iki tane ondalık basamak var. Onu da ekleyelim 
    
    //alert('dec = ' + dec);
    
    
    var result = document.convert.cms;
    result.value = multiplication(A, B, dec);
    
    }
    
    </script>
    
    </head>
    <body>
     <FORM ACTION="#" NAME="convert" >
    Enter Inches
    <INPUT TYPE=TEXT NAME="ins"><BR><BR><input type="button" value="convert" onclick='bul()'>
    <BR><BR>
    <INPUT TYPE=TEXT NAME="cms" readonly> centimetres
    </FORM>
    </body>
    </html>
    The Time Through Ages
    1. By the Time,
    2. Verily Man is in loss,
    3. Except such as have Faith, and do righteous deeds, and (join together) in the mutual enjoining of Truth, and of Patience and Constancy.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles