双向选择列表框

代码出自《JavaScript 典型应用与最佳实践》,敲完后花个来钟头终于纠正了其中一些错误。在IE中算是正常了,不过在VS2008中给了一些不符合HTML4.01标准的错误
就不理了。



<html>
<head>
    <title>双向选择列表</title>
	<style type="text/css">
          body
          {
          	text-align:center;
          }
          p
          {
          	text-align:center;
          }
          #wrap
          {
          	width:800px;
          	margin:0 auto;
          	text-align:left;
          	position:relative;
          }
          #buttonArea
          {
          	width:100px;
          	float:left;
          }
          #leftPanel
          {
          	width:350px;
          	float:left;
          }
          #rightPanel
          {
          	width:350px;
          	float:left;
          }
          #footer
          {
          	clear:both;
          }
    </style>
    <script type="text/javascript">
    function loadAllUnselected(){
        var unassignedTable = document.getElementById("unassignedTable");
		//!!!!!!!!!!!!!!
        var rowsUnsellected = unassignedTable.childNodes[0].childNodes;
        document.getElementById("unselected").value="";
        for( i=0;i<rowsUnsellected.length;++i){
            if(rowsUnsellected[i].tagName == "TR" && rowsUnsellected[i].getAttribute("id")!=""){
                document.getElementById("unselected").value = 
                document.getElementById("unselected").value + '||' + rowsUnsellected[i].getAttribute("id");            
            }
        }
        var assignedTable = document.getElementById("assignedTable");
		//!!!!!!!!!!!
        var rowsSelected = assignedTable.childNodes[0].childNodes;
        for(  i=0;i<rowsSelected.length;++i){
            if(rowsSelected[i].tagName == "TR" && rowsSelected[i].getAttribute("id")!=""){
                document.getElementById("unselected").value = 
                document.getElementById("unselected").value + "||" + rowsSelected[i].getAttribute("id");
            }
        }
    }
    //汇总所有已分配和未非配的数据
    function countAllIds(){
        var unassignedTable = document.getElementById("unassignedTable");
		//!!!!!!!!!!!!!!!!!!
        var rowsUnas =unassignedTable.childNodes[0].childNodes;
        document.getElementById("unassignedids").value="";
        for(var i = 0;i <rowsUnas.length;++i){
            if(rowsUnas[i].tagName == "TR" && rowsUnas[i].getAttribute("id")!=""){
                document.getElementById("unassignedids").value =
                document.getElementById("unassignedids").value + "||" +rowsUnas[i].getAttribute("id");
            }
        }
        
        var assignedTable = document.getElementById("assignedTable");
		
		//!!!!!!!
        var rowsas = assignedTable.childNodes[0].childNodes;
        document.getElementById("assignedids").value="";
        for(var i=0 ;i<rowsas.length;++i){
            if(rowsas[i].tagName == "TR" && rowsas[i].getAttribute("id")!="")
                document.getElementById("assignedids").value =
                document.getElementById("assignedids").value + "||" + rowsas[i].getAttribute("id");
        }
    }
    
    //将选中的行移至未分配表
    function moveToLeft(){
        var ids=document.getElementById("selected").value;
        var idArray = ids.split("||");
        for(i=0;i<idArray.length;++i){
            if(idArray[i]!=""){
                var moveObj = document.getElementById(idArray[i]);
                add(moveObj,"unassignedTable");
            }
        }
        countAllIds();
    }
    
     //将选中的行移至分配表
     function moveToRight(){
        var ids=document.getElementById("selected").value;
        var idArray = ids.split("||");
        for(i=0;i<idArray.length;++i){
            if(idArray[i]!=""){
                var moveObj = document.getElementById(idArray[i]);
                add(moveObj,"assignedTable");
            }
        }
		countAllIds();
     }
     
     //指定的表格中添加行
     function add(rowObj, tableObj){
        var table = document.getElementById(tableObj);
        var newRow = table.insertRow(table.rows.length);
        newRow.replaceNode(rowObj);
     }
     
     //删除已选择的行
     function removeRow(obj){
        var clickedRow = obj;
        while(clickedRow != "TR"){
            clickedRow = clickedRow.parentNode;
        }
        clickedRow.parentNode.removeChild(clickedRow);
     }
     
     //当鼠标点击时切换背景色与设置值
     function changeBackground(obj){
        if(obj.style.background == "silver"){
            obj.style.background = "#ffffff";
            document.getElementById("unselected").value = document.getElementById("unselected").value + "||" + obj.getAttribute("id");
            document.getElementById("selected").value = document.getElementById("selected").value.replace("||" + obj.getAttribute("id"),'');
        }
        else{
            if(document.getElementById("selected").value.indexOf(obj.getAttribute("id"))<0){
                document.getElementById("selected").value =
                document.getElementById("selected").value+ "||" +obj.getAttribute("id");
                document.getElementById("unselected").value =
                document.getElementById("unselected").value.replace("||" +obj.getAttribute("id"),'');
            }
            obj.style.background = "silver";
        }
     }
    </script>
</head>


<body  οnlοad="loadAllUnselected();countAllIds();">
    <div id="wrapper">
        <div>
            <p>双向选择列表</p>
        </div>
        <div id="leftPanel">
			<p>
                <table id="unassignedTable" width="350" border="1"  cellpadding="0" cellspacing="0">
                    <tr>
                        <th colspan="3">未分配</th>
                    </tr>
                    <tr>
                        <th>列1
                        </th>
                        <th>列2
                        </th>
                        <th>列3
                        </th>
                    </tr>
                    <tr id="a" οnclick="changeBackground(this)">
                        <td>A</td><td>A</td><td>A</td>
                    </tr>
                    <tr id="b" οnclick="changeBackground(this)">
                        <td>B</td><td>B</td><td>B</td>
                    </tr>
                </table>
			</P
        </div>
        
        <div id="buttonArea">
		    <p>
                <p>
                    <input type="button" οnclick="moveToRight();" value=">>" />
                </p>
                <p>
                    <input type="button" οnclick="moveToLeft();" value="<<" /> 
                </p>
			</p>
        </div>
        
        <div id="rightPanel">
		    <p>
				<table id="assignedTable" width="350" border="1" cellpadding="0" cellspacing="0">
					<tr>
						<th colspan="3" >已分配</th>
					</tr>
					<tr>
					<th>列1
					</th>
					<th>列2
					</th>
					<th>列3
					</th>
					</tr>
					
					<tr id="c" οnclick="changeBackground(this)">
						<td>C</td><td>C</td><td>C</td>
					</tr>
				</table>
			</p>
        </div>
    </div>
    <p>
       未选择:<input id="unselected" type="text" value="" />   
       已选择:<input id="selected" type="text" value="" /> 
    </p>
    <p>
        未分配:<input id="unassignedids" type="text" value="" />   
        已分配:<input id="assignedids" type="text" value="" />
    </p>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值