我有一个管理Raspberry Pi的GPIO Pin的Web服务器,但是当我启动服务器时,我必须在div上单击两次以启动led ...
可能是什么问题?这是我编写的用于管理led
的html页面的代码<script>
function onoff(led) {
var xmlhttp;
var v = document.getElementById("input_" + led).value;
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
}
else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
if (v == 'on'){
document.getElementById("input_" + led).value = 'off';
document.getElementById("par_lamp").innerHTML = "<img class='lampadina' src='http://192.168.1.91:8080/lampadina_on.png' alt='lampadina' height='198' width='120'>";
}
else{
document.getElementById("input_" + led).value = 'on';
document.getElementById("par_lamp").innerHTML = "<img class='lampadina' src='http://192.168.1.91:8080/lampadina_off.png' alt='lampadina' height='198' width='120'>";
}
}
}
xmlhttp.open("GET","http://192.168.1.91:8080/remote.html?led=" + led + "&action=" + v,true);
xmlhttp.send();
}
</head>
<body>
<center>
<img src="http://192.168.1.91:8080/logo.png" alt="logo_sito" width:"198" height:"120">
</center>
<p align="center" id="par_lamp">
<img class="lampadina" src="http://192.168.1.91:8080/lampadina_off.png" alt="lampadina" height="198" width="120">
</p>
<div id="input_11" class="button" onclick="onoff(11)" value="off">
</div>
答案 0 :(得分:0)
要调试此类内容,您应该查看浏览器中的开发工具。所有浏览器都允许您逐步查看代码,以确切了解所发生的情况。 在这种情况下,您的流程如下:
<div id="input_11" class="button" onclick="onoff(11)" value="off">
Div以值'off'开头。如果单击代码确实:
var v = document.getElementById(“input_”+ led).value; xmlhttp.open(“GET”,“Java deployment guide”+ led +“&amp; action =”+ v,true); 然后将“关闭”的初始值“off”发送到您的服务器。 只有在以后它才会将其切换为“打开”,以便下次点击它实际上会发送。
因此,您需要在发送命令之前切换当前状态,或者需要将初始状态设置为“on”,以便第一次单击发送正确的命令。
xmlhttp.onreadystatechange=function() {
中的代码只会在xmlhttp.send()
之后运行,因为它是绑定到xmlhttp
的事件处理函数