Using an HTML button to call a JavaScript function

前端 未结 10 1639
我在风中等你
我在风中等你 2020-11-22 09:59

I am trying to use an HTML button to call a JavaScript function.

Here\'s the code:



        
10条回答
  •  感情败类
    2020-11-22 10:13

    One major problem you have is that you're using browser sniffing for no good reason:

    if(navigator.appName == 'Netscape')
        {
          vesdiameter  = document.forms['Volume'].elements['VesDiameter'].value;
          // more stuff snipped
        }
        else
        {
          vesdiameter  = eval(document.all.Volume.VesDiameter.value);
          // more stuff snipped
        }
    

    I'm on Chrome, so navigator.appName won't be Netscape. Does Chrome support document.all? Maybe, but then again maybe not. And what about other browsers?

    The version of the code on the Netscape branch should work on any browser right the way back to Netscape Navigator 2 from 1996, so you should probably just stick with that... except that it won't work (or isn't guaranteed to work) because you haven't specified a name attribute on the input elements, so they won't be added to the form's elements array as named elements:

    
    

    Either give them a name and use the elements array, or (better) use

    var vesdiameter = document.getElementById("VesDiameter").value;
    

    which will work on all modern browsers - no branching necessary. Just to be on the safe side, replace that sniffing for a browser version greater than or equal to 4 with a check for getElementById support:

    if (document.getElementById) { // NB: no brackets; we're testing for existence of the method, not executing it
        // do stuff...
    }
    

    You probably want to validate your input as well; something like

    var vesdiameter = parseFloat(document.getElementById("VesDiameter").value);
    if (isNaN(vesdiameter)) {
        alert("Diameter should be numeric");
        return;
    }
    

    would help.

提交回复
热议问题