我编写的脚本有一个按钮,单击该按钮时,应显示年份和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。
答案 0 :(得分:2)
将onClick改为onclick="myFunction()"
,它应该如何(总是使用引号,这是一个函数调用,所以包括括号)。
第二个脚本直接调用您作为回调参数?callback=myFunction
传递的函数,因此它将自动调用 您的myFunction()
。
尝试直接在浏览器中打开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>