我试图使用HTML按钮调用JavaScript函数。

代码如下:

<input type="button" value="Capacity Chart" onclick="CapacityChart();">

但它似乎不能正常工作。还有更好的办法吗?

这是链接:http://projectpath.ideapeoplesite.com/bendel/toolscalculators.html点击左下角的容量选项卡。如果值没有更改,该按钮应该生成一个警报,如果输入值,则应该生成一个图表。


当前回答

你的代码在这一行失败了:

var RUnits = Math.abs(document.all.Capacity.RUnits.value);

我试着用firebug踩过它,它失败了。这应该能帮你解决问题。

你已经引用了jquery。你也可以在所有这些函数中使用它。它将显著地清理您的代码。

其他回答

你的代码在这一行失败了:

var RUnits = Math.abs(document.all.Capacity.RUnits.value);

我试着用firebug踩过它,它失败了。这应该能帮你解决问题。

你已经引用了jquery。你也可以在所有这些函数中使用它。它将显著地清理您的代码。

你有一个主要的问题是你使用浏览器嗅探没有好的理由:

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;
}

会有所帮助。

正如您所知道的,当您调用函数时,分号(;)不应该出现在按钮中。

它应该是这样的onclick="CapacityChart()"

然后这一切都应该工作:)

您的HTML和从按钮调用函数的方式看起来是正确的。

问题似乎出在CapacityCount函数上。我在Firefox 3.5的控制台中得到这个错误:“document。在bendelcorp.js的第759行,“所有都是未定义的”。

编辑:

看起来像文件。all是一个仅限ie的东西,是访问DOM的非标准方式。如果使用document.getElementById(),它应该可以工作。例子:. getelementbyid(“RUnits”)。value而不是document.all.Capacity.RUnits.value

我有一个智能函数调用回退按钮代码:

<br>
<p id="demo"></p><h2>Intelligent Button:</h2><i>Note: Try pressing a key after clicking.</i><br>
<button id="button" shiftKey="getElementById('button').innerHTML=('You're pressing shift, aren't you?')" onscroll="getElementById('button').innerHTML=('Don't Leave me!')" onkeydown="getElementById('button').innerHTML=('Why are you pressing keys?')" onmouseout="getElementById('button').innerHTML=('Whatever, it is gone.. maybe')" onmouseover="getElementById('button').innerHTML=('Something Is Hovering Over Me.. again')" onclick="getElementById('button').innerHTML=('I was clicked, I think')">Ahhhh</button>