没有引号,OnClick函数会自动调用

时间:2015-04-18 11:14:48

标签: javascript onclick

我编写的脚本有一个按钮,单击该按钮时,应显示年份和IP地址,但它会自动执行。我在另一个3D中看到这个问题出现在" onclick"您可以选择

这样的功能
<button name="bottone" onclick=myFunction()>AH-AH</button>

但这不是我的情况。

<button name="bottone" onclick=myFunction>AH-AH</button>

<p id="demo"></p>

<script>
function myFunction(json) {
    var d = new Date();
    var n = d.getFullYear();
    var ip = json.ip;
    document.getElementById("demo").innerHTML = n + ' ' + ip;
}
</script>

<script type="application/javascript" src="http://jsonip.appspot.com/?callback=myFunction"></script>

似乎是第二个脚本&#34;覆盖&#34;选项onClick。

3 个答案:

答案 0 :(得分:2)

  1. 将onClick改为onclick="myFunction()",它应该如何(总是使用引号,这是一个函数调用,所以包括括号)。

  2. 第二个脚本直接调用您作为回调参数?callback=myFunction传递的函数,因此它将自动调用 您的myFunction()

  3. 尝试直接在浏览器中打开that script url以查看脚本将执行的内容:

    myFunction({"ip": "11.11.11.81", "address":"11.11.11.81"});
    

答案 1 :(得分:2)

该脚本立即调用您的函数:

myFunction({"ip": "88.9.35.40", "address":"88.9.35.40"});

相反,您可以将数据存储在变量中,并在事件处理程序中使用该变量:

<button name="bottone">Display year and IP</button>
<p id="demo"></p>
<script>
(function() {
  var ipData;
  window.getIpData = function(data) { // We must use awful global for JSONP
    delete window.getIpData; // Get rid of the awful global
    ipData = data;
  };
  document.getElementsByName('bottone')[0].onclick = function() {
    if(ipData) {
      var year = new Date().getFullYear(),
          ip = ipData.ip;
      document.getElementById("demo").innerHTML = year + ' ' + ip;
    }
  }
})();
</script>
<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getIpData"></script>

答案 2 :(得分:0)

使用这段代码。你包含的脚本,正在调用一个回调函数,并在里面打印Date和Ip onload of page。 所以我一直保持在单独的函数中显示ip和日期代码。

用于显示日期和Ip的变量&gt;我将它们设为全局,因此这些变量可以在回调方法之外使用。

<button name="bottone" onclick="showIpNDate()">AH-AH</button>
    
    <p id="demo"></p>
    
    <script>
        var ip, n;
    
        function myFunction(json) {
            var d = new Date();
            n = d.getFullYear();
            ip = json.ip;
    
        }
    
        function showIpNDate() {
            document.getElementById("demo").innerHTML = n + ' ' + ip;
        }
    </script>
    
    <script type="application/javascript" src="http://jsonip.appspot.com/?callback=myFunction"></script>