我试图使用HTML按钮调用JavaScript函数。
代码如下:
<input type="button" value="Capacity Chart" onclick="CapacityChart();">
但它似乎不能正常工作。还有更好的办法吗?
这是链接:http://projectpath.ideapeoplesite.com/bendel/toolscalculators.html点击左下角的容量选项卡。如果值没有更改,该按钮应该生成一个警报,如果输入值,则应该生成一个图表。
你有一个主要的问题是你使用浏览器嗅探没有好的理由:
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
}
我用的是Chrome浏览器,导航器。appName不会是Netscape。Chrome是否支持document.all?也许吧,但也可能不是。那么其他浏览器呢?
Netscape分支上的代码版本应该可以在任何浏览器上运行,从1996年开始就可以使用Netscape Navigator 2,所以您可能应该坚持使用它……除非它不能工作(或不能保证工作),因为你没有在输入元素上指定name属性,所以它们不会作为命名元素添加到表单的elements数组中:
<input type="text" id="VesDiameter" value="0" size="10" onKeyUp="CalcVolume();">
要么给它们一个名称并使用元素数组,要么(更好)使用
var vesdiameter = document.getElementById("VesDiameter").value;
这将工作在所有现代浏览器-没有分支的必要。为了安全起见,用getElementById支持检查替换浏览器版本大于或等于4的嗅探:
if (document.getElementById) { // NB: no brackets; we're testing for existence of the method, not executing it
// do stuff...
}
你可能也想验证你的输入;类似的
var vesdiameter = parseFloat(document.getElementById("VesDiameter").value);
if (isNaN(vesdiameter)) {
alert("Diameter should be numeric");
return;
}
会有所帮助。