хорошо, работа всего кода такая, открываем страничку принимаем гет запросом состояния всех кнопок потом нажимаем на кнопки и отправляем изменение.
Вот часть функции приема , туда я добавляю состояние кнопки(on,off) в span (в Button и правда будет лишнее)
и меняем состояние value в кнопке
//Leds
for (var i=0; i < 16; i++) {
if (this.responseXML.getElementsByTagName('LED')[i].childNodes[0].nodeValue === "on") {
document.getElementById("ld"+i).innerHTML = "ON";
LED_state[i] = 1;
//document.getElementById("LED"+i).value = 1;
} else {
document.getElementById("ld"+i).innerHTML = "OFF";
LED_state[i] = 0;
//document.getElementById("LED"+i).value = 0;
}
}
В итоге при клике формируем только переменную strButton которая потом отправляется(map().join('&') оказывается не нужен, все работает проверял)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script>
var strButton;//отправка состояния
document.addEventListener('DOMContentLoaded', function(){
document.querySelector('#led').addEventListener('click', function(e){
var bt = e.target, f;
while (bt.tagName != 'DIV') {
if(bt.tagName == 'BUTTON') {
f = bt.value ^ 1;
strButton = '&'+bt.name+'='+bt.value;
document.querySelector('#test').innerHTML = strButton;//временно
return;
}
bt = bt.parentNode;
}
});
});
</script>
</head>
<body>
<div id="led">
<p>30: <button name="LED1" value="0"> button </button> <span class="value">...</span></p>
<p>31: <button name="LED2" value="0"> button </button> <span class="value">...</span></p>
<p>32: <button name="LED3" value="0"> button </button> <span class="value">...</span></p>
</div>
<div id="test"></div>
</body>
</html>