html中-css中 - 以ul 和 li标签双层结构为例
js中
1,定义一个init方法, 完成处理数据 并把最后选中的数据返回
1.通过getArr方法, 挂载了li元素的点击事件liClick方法, 并返回处理好的数据arr,checkbox的话arr里面是多条选中的,radio则为单条
通过array的特性来达到return返回的数据同步
2.根据传递过来的type类型判断是单选框还是复选框, 来调用不同的处理函数checkboxFun或radioFun
3.checkboxFun完成了复选框的一些数据处理操作 , , radioFun 完成了单选框的一些数据处理操作
2, 获取子元素集合, 并调用init函数,
init函数调用并会返回一个newArr, 这个newArr就是最新的数据集合
这样就可以实现一个单选多选的功能了
首先两个按钮的name是相同的,可以通过var obj = document.getElementsByName('name')得到这两个按钮对象。然后遍历两个对象obj[0],obj[1] ,obj[i].checked==''或obj[i].checked==false就说明没有选中。我只能说,你这逻辑明显不对,你应该是要为每一个radio控件绑定onclick事件,点击的时候alert一下。
你的代码有几个错误。
1、getElementsByName("radios")返回的是一个数组,你不能为一个数组对象绑定onclick事件
2、循环绑定js的onclick事件,需要借用闭包或者函数的方式,否则绑定的onclick事件都会是最后一个对象的方法。
以下是我用闭包的方式解决你的绑定方法,你可以看一下,把你的所有js去掉,页面不变,js换成如下代码:
<script type="text/javascript">var box = document.getElementsByName("radios")
// 循环为每个 radio 绑定 onclick 事件
for (var i = 0 i < box.length i++) {
(function() {
var boxone = box[i]
box[i].onclick = function() {
// 如果当前的 radio 被选中,则 alert 他的 value
if (boxone.checked) {
alert(boxone.value)
}
}
})()
}
</script>