Javascript 只调用函数一次

Javascript 只调用函数一次,javascript,jquery,html,Javascript,Jquery,Html,我创建了一个单选按钮,用户可以选择公制或英制单位。 以下代码是事件处理程序: var metricRadio = document.getElementById("metric"); var imperialRadio = document.getElementById("imperial"); metricRadio.addEventListener("click", toMetric, false); imperialRadio.addEventListener("click", toI

我创建了一个单选按钮,用户可以选择公制或英制单位。 以下代码是事件处理程序:

var metricRadio = document.getElementById("metric");
var imperialRadio = document.getElementById("imperial");

metricRadio.addEventListener("click", toMetric, false);

imperialRadio.addEventListener("click", toImperial, false);
当用户单击公制单选按钮时,将调用函数
toMetric
。在函数
toMetric
中,我将用户在英制中输入的内容转换为公制,并用公制值更新输入框。问题是,如果选择了Metric并再次单击Metric单选按钮,则会再次调用函数
toMetric
。当选择公制单选按钮时,如何防止调用
toMetric
功能

你可以在这里测试我的意思:


只需输入3个值并多次单击公制或英制单选按钮。

不要尝试只调用一次函数(可以设置变量),而应添加包含当前状态(公制或英制)的变量在函数中,您使用if条件测试当前状态,而不是仅尝试调用函数一次(您可以设置变量),您应该添加一个包含当前状态(公制或英制)的变量,并在函数中使用if条件测试当前状态。请看以下内容:

我使用“更改”而不是“单击”:

看看这个:

我使用“更改”而不是“单击”:


显示公制时是否要禁用公制处理程序,显示公制时是否要禁用英制处理程序?是的,我正试图这样做。显示公制时是否要禁用公制处理程序,显示公制时是否要禁用英制处理程序?是的,我正试图这样做。下面是一个示例然而,Siva的想法似乎是最好的选择,因为你不必自己跟踪状态事实上你不需要添加变量,你可以检查复选框的状态。请参阅更新:这不起作用,因为在调用处理程序时,
checked
状态已发生更改(我也尝试过),请尝试多次单击度量。不过,这是您建议的实现,Siva的想法似乎是最好的选择,因为您不必跟踪自己的状态事实上,您不需要添加变量,您可以检查复选框的状态。请参阅更新:这不起作用,因为在调用处理程序时,
checked
状态已经更改(我也尝试过),请尝试多次单击度量。另一种方法是为其上方的div指定一个处理程序,并检测哪个处理程序处于活动状态。另一种方法是为其上方的div使用一个处理程序,并检测哪个处理程序处于活动状态。
metricRadio.addEventListener("change", toMetric, false);

imperialRadio.addEventListener("change", toImperial, false);