没有引号,OnClick 函数自动调用
Without quotations, OnClick function is calling automatically
我编写的脚本有一个按钮,单击该按钮时应显示年份和 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>
似乎是第二个脚本 "overrides" onClick 选项。
将 onClick 更改为 onclick="myFunction()"
,应该是这样(始终使用引号,这是一个函数调用,因此包括括号)。
第二个脚本直接调用您作为回调参数传递的函数 ?callback=myFunction
,因此它将自动 调用您的 myFunction()
.
尝试直接在浏览器中打开 that script url 以查看脚本将执行的内容:
myFunction({"ip": "11.11.11.81", "address":"11.11.11.81"});
脚本会立即调用您的函数:
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>
使用这段代码。您包含的脚本正在调用回调函数,并且在其中打印页面的日期和 Ip 加载。
所以我一直在单独的函数中显示 ip 和日期代码。
用于显示日期和 Ip 的变量> 我将它们设为全局变量,因此这些变量可以在回调方法之外使用。
<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>
我编写的脚本有一个按钮,单击该按钮时应显示年份和 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>
似乎是第二个脚本 "overrides" onClick 选项。
将 onClick 更改为
onclick="myFunction()"
,应该是这样(始终使用引号,这是一个函数调用,因此包括括号)。第二个脚本直接调用您作为回调参数传递的函数
?callback=myFunction
,因此它将自动 调用您的myFunction()
.
尝试直接在浏览器中打开 that script url 以查看脚本将执行的内容:
myFunction({"ip": "11.11.11.81", "address":"11.11.11.81"});
脚本会立即调用您的函数:
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>
使用这段代码。您包含的脚本正在调用回调函数,并且在其中打印页面的日期和 Ip 加载。 所以我一直在单独的函数中显示 ip 和日期代码。
用于显示日期和 Ip 的变量> 我将它们设为全局变量,因此这些变量可以在回调方法之外使用。
<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>