一个父对象下面有三个子对象,总对象和分对象都有三个radio属性:1Read Only,2Read/Write,3Read/Write/Delete。
要求父对象的属性可对子对象属性进行批量修改,而子对象的属性也是可以单独修改,但是当子对象属性不同时候父对象radio的三个属性均不为checked。
业务逻辑应该不难理解,但是这个radio的JS怎么写啊,请前台大神指点一下。
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> <script type="text/javascript"> function pselect(obj) { var pv = obj.value; setRadioValue("c1", pv); setRadioValue("c2", pv); setRadioValue("c3", pv); } function cselect(obj) { var cv = obj.value; var sameSelect = isChildSameSelect(); if(sameSelect) { setRadioValue("p", cv); } else { setRadioNone("p"); } } function isChildSameSelect() { var v1 = getRadioValue("c1"); var v2 = getRadioValue("c2"); var v3 = getRadioValue("c3"); return v1 === v2 && v1 === v3; } function getRadioValue(name) { var radios = document.getElementsByName(name); for(var i = 0; i < radios.length; i ++) { var radio = radios[i]; if(radio.checked) return radio.value; } } function setRadioValue(name, value) { var radios = document.getElementsByName(name); //本来是应该遍历数组的,这里偷懒了 radios[value - 1].checked = "checked"; } function setRadioNone(name) { var radios = document.getElementsByName(name); for(var i = 0; i < radios.length; i ++) { radios[i].checked = ""; } } </script> </head> <body> <ul> <li> <input type="radio" name="p" value="1" onclick="pselect(this);" /> Read Only <input type="radio" name="p" value="2" onclick="pselect(this);" /> Read/Write <input type="radio" name="p" value="3" onclick="pselect(this);" /> Read/Write/Delete </li> <ul> <li> <input type="radio" name="c1" value="1" onclick="cselect(this);" /> Read Only <input type="radio" name="c1" value="2" onclick="cselect(this);" /> Read/Write <input type="radio" name="c1" value="3" onclick="cselect(this);" /> Read/Write/Delete </li> <li> <input type="radio" name="c2" value="1" onclick="cselect(this);" /> Read Only <input type="radio" name="c2" value="2" onclick="cselect(this);" /> Read/Write <input type="radio" name="c2" value="3" onclick="cselect(this);" /> Read/Write/Delete </li> <li> <input type="radio" name="c3" value="1" onclick="cselect(this);" /> Read Only <input type="radio" name="c3" value="2" onclick="cselect(this);" /> Read/Write <input type="radio" name="c3" value="3" onclick="cselect(this);" /> Read/Write/Delete </li> </ul> </ul> </body> </html>
不知道是不是这样的。
说实话,本身逻辑并不复杂,如果楼主只是不知道如何获取radio的值,那么百度一下也就知道了
完全正解,膜拜大神,感谢大神!