功能没有计算总和

时间:2016-03-21 07:33:23

标签: javascript function

我有两个功能。第一个功能只有在你点击按钮"演示"时才有效,第二个功能必须工作当你点击按钮来计算变量" c"。但它没有正确的工作。为什么?

我需要在代码中更改它的工作正确吗?我做错了什么以及如何更好地完成我的代码。给一些解决方案PLZ。

P.S。:正确 - 当你点击按钮然后功能aaa()必须工作并获得var" c"值= 7;

<a id="demo" onclick="document.getElementById('demo').onclick()">Button</a>

document.getElementById('demo').onclick = function() {
    a = 5;
    document.getElementById('demo').onclick.called=true;
    alert(a);
    return a;
}

function aaa() {
    if(document.getElementById('demo').onclick.called) {
        c = document.getElementById('demo').onclick() + 2;
        alert(c);
        return c;
    } else {
        alert("no function");
    }
}

aaa();

1 个答案:

答案 0 :(得分:0)

问题是您的代码在点击aaa()时未调用button。您获得的警报是事件监听器。

您可以尝试以下代码:

&#13;
&#13;
document.getElementById("demo").onclick = function demoClick() {
  a = 5;
  document.getElementById('demo').onclick.called = true;
  alert("Not aaa: " + a);
  return a;
}

function aaa() {
  if (document.getElementById('demo').onclick.called) {
    c = document.getElementById('demo').onclick() + 2;
    alert("aaa: " + c);
    return c;
  } else {
    alert("no function");
  }
}
&#13;
<a id="demo">Button</a>
<button onclick="aaa()">Check Sum</button>
&#13;
&#13;
&#13;

另外,如果你这样做:

document.getElementById('demo').onclick = function() 

你不需要这个:

<a id="demo" onclick="document.getElementById('demo').onclick()">Button</a>
             ^^^^^^^

编辑1

你可以尝试这样的事情:JSFiddle

注意:如果向元素添加多个事件侦听器,则无法确定哪个事件将首先执行。

理念方法

JSFiddle

&#13;
&#13;
function aaa() {
  if (document.getElementById('demo').onclick.called) {
    var c = getValue() + 2;
    alert("Updated Value (Sum): " + c);
    return c;
  } else {
    alert("no function");
    updateState();
  }
}

function getValue() {
  var a = 5;
  alert("Base Value: " + a);
  return a;
}

function updateState(){
	document.getElementById('demo').onclick.called = true;
}

function registerEvents(){
	document.getElementById("demo").onclick = aaa;
}

registerEvents();
&#13;
<a id="demo">Button</a>
&#13;
&#13;
&#13;