一般是语法问题,有语法问题的代码是不会解释的。
重点检查括号配对与否,for里面的分号。

解决方案 »

  1.   

    看过多遍了,老看不出来
    代码<html>
    <head>
       <title>
          用户迁移页面
       </title>
    </head>
    <script language="javaScript">
    //颜色定义
    //没有操作时的颜色
    var blankColor = "#F7F7F7";
    //选中的颜色
    var selectedColor = "#DDDDDD";
    //操作完成的颜色
    var operatedColor = "#BABABA";
    //待操作行颜色
    var upoperateColor = "#CFCFCF";
    //输入格颜色
    var inputColor = "#EFEFEF";
    //---------用户属性操作的变量-----------/////
    var oa_cur_row;
    //外部属性表格当前行
    var ua_cur_row;
    //属性表格当前行
    var oa_cur_cell;
    //当前列(外部属性表格)
    var oa_cur_td;
    //之前操作的TD
    var oat;
    //外部属性表格
    var uat;
    //属性表格
    //---------用户属性操作的方法-----------///
    function dbClickTd(){
       event.cancelBubble = true;
       var ttd = event.srcElement;
       //TD
       if (ttd.tagName != "TD"){
          if (ttd.tagName == "DIV"){
             ttd = ttd.parentElement;
          } else{
             return;
          }
       }
       var ttr = ttd.parentElement;
       //当前TR
       //可编辑选项打开并且当前行可编辑
       var first_td = ttr.children[0];
       var cur_sele = first_td.children[0];
       if (cur_sele.value != "add"){
          return;
       }
       oa_cur_td = ttd;
       //当前操作的TD
       oa_cur_cell = oa_cur_td.cellIndex;
       //当前列
       oa_cur_row = ttr.rowIndex;
       //当前行
       //用可编辑DIV层替换TD中原有文本
       if (oa_cur_td.innerHTML.indexOf("div") < 0 || oa_cur_td.innerHTML.indexOf("DIV") < 0){
          oa_cur_td.innerHTML = "<DIV>" + oa_cur_td.innerHTML + "</DIV>";
       }
       oa_cur_td.children[0].contentEditable = true;
       with (oa_cur_td.runtimeStyle){
          backgroundColor = inputColor;
       }
    }
    //单击表格事件
    function oaClickTable(){
       event.cancelBubble = true;
       var srcEle = event.srcElement;
       if (srcEle.tagName == "TD"){
          var ctr = srcEle.parentElement;
          if ((oa_cur_td != null) && (oa_cur_td.children[0] != null)){
             if (oa_cur_td.children[0].contentEditable){
                oa_cur_td.innerHTML = oa_cur_td.innerText;
                with (oa_cur_td.runtimeStyle){
                   backgroundColor = blankColor;
                }
             }
          }
          //将上一行的颜色改回
          oat.children[oa_cur_row].style.backgroundColor = blankColor;
          //设置当前行
          oa_cur_row = ctr.rowIndex;
          //改变当前行颜色
          ctr.style.backgroundColor = selectedColor;
       }
    }
    // 保存用户要新增或修改的属性
    function saveAttr(){
       //验证
       if (!checkAttrs()) return;
       var addString = "";
       var relationString = "";
       var updateString = "";
       //循环TR;
       for (var i = 1; i < oat.children.length; i++){
          var ttr = oat.children[i];
          //循环处理TD
          var sele = ttr.children[0].children[0];
          //操作控件
          if (sele.value == "none") continue;
          if (sele.value == "add"){
             if (addString != "") addString += ",";
             addString += "field=" + ttr.children[1].innerText;
             addString += ";type=" + ttr.children[2].innerText;
             addString += ";length=" + ttr.children[3].innerText;
             addString += ";default=" + ttr.children[4].innerText;
             addString += ";attrId=" + ttr.children[5].innerText;
             addString += ";attrName=" + ttr.children[6].innerText;
          } else if (sele.value == "relation"){  //将保存的字段映射关系组成约定的字符串格式
             if (relationString != "") relationString += ",";
             relationString += ttr.children[1].innerText + "-" + ttr.children[5].innerText;
          } else if (sele.value == "update"){
             if (updateString != "") updateString += ",";
             updateString += ttr.children[1].innerText + "-" + ttr.children[5].innerText;
          }
       }
       if (updateString == "" && relationString == "" && addString == ""){
          alert("没有要更新的属性。");
          return;
       }
       document.attrOperateForm.addString.value = addString;
       document.attrOperateForm.relationString.value = relationString;
       document.attrOperateForm.updateString.value = updateString;
       document.attrOperateForm.submit();
    }
    //属性操作改变事件
    function changeOperateAttr(oldValue,sele){
       var newValue = sele.value;
       //如果不改为要修改对应关系,则不作处理
       if (oldValue == newValue) return;
       var ttd = sele.parentElement;
       var ttr = ttd.parentElement;
       //清空数据
       ttr.children[5].innerText = " ";
       ttr.children[6].innerText = " ";
       oa_cur_row = ttr.rowIndex;
       if (newValue == "relation" || newValue == "update"){
          ttr.style.backgroundColor = upoperateColor;
          alert("请在用户属性中选择一条信息与此字段关联。");
       } else if (newValue == "add"){
          //检验属性表格,若有相同的字段名,则不允许为新增
          var field_name = ttr.children[1].innerText;
          field_name = field_name.toUpperCase();
          //循环属性表格
          for (var i = 0; i < uat.children.length; i++){
             var t_field = uat.children[i].innerText;
             if (field_name == t_field.toUpperCase()){
                alert("字段名 " + field_name + " 重复,不能新增。");
                sele.value = oldValue;
                break;
             }
          }
       }
    }
      

  2.   

    我这边的开发工具也检查不出语法错误 
    代码2://验证属性表格中的数据
    function checkAttrs(){
       //循环验证
       var ttr;
       var operate;
       var value = "";
       for (var i = 1; i < oat.children.length; i++){
          ttr = oat.children[i];
          operate = ttr.children[0].children[0].value;
          //如果有字段选择为不操作,警告
          if (operate == "none"){
             if (!confirm("如果将字段选择为不操作,将在您原有系统与中无法使用这个属性。请确定要废弃这个属性! 第" + (i + 1) + "行!")){
                return false;
             }
          }
          //如果是新增,则做不能为空的检验,并为ATTRID做有效性验证
          if (operate == "add"){
             //属性编码
             value = ttr.children[5].innerText;
             //去掉空格
             value = trimSpace(value);
             ttr.children[5].innerText = value;
             var patrn = /^(\w){1,20}$/;
             if (!patrn.test(value)){
                alert("新增属性的属性编码不合法:不能为空,不能超过20位,以字母和数字组成。第 " + (i) + " 行:" + value);
                return false;
             }
             //属性名称
             value = ttr.children[6].innerText;
             //去掉空格
             value = trimSpace(value);
             ttr.children[6].innerText = value;
             if (value == null || value == "" || value.length > 20){
                alert("新增属性的属性名称不合法:不能为空,不能超过20位。第 " + (i) + " 行:" + + value);
                return false;
             }
          }
       }
       //检查必须映射的字段是否已经映射完成
       var needattrs = "userId,username,password".split(",");
       var isExist = false;
       for (var i = 0; i < needattrs.length; i++){
          isExist = false;
          var f = needattrs[i];
          for (var j = 1; j < oat.children.length; j++){
             var of = oat.children[j].children[5].innerText;
             if (f == of){
                isExist = true;
                break;
             }
          }
          if (!isExist){
             alert("必要属性 " + f + " 没有被映射。不能保存。");
             return false;
          }
       }
       return true;
    }
    //用户表格的表格行的单击操作
    function uaClickTable(){
       var srcEle = event.srcElement;
       var ctr;
       //TR
       if (srcEle.tagName == "TD"){
          ctr = srcEle.parentElement;
          //将之前的TR颜色改回
          var ptr = uat.children[ua_cur_row];
          ptr.style.backgroundColor = blankColor;
          ctr.style.backgroundColor = selectedColor;
          //新的当前行
          ua_cur_row = ctr.rowIndex;
          //找到当前外部属性表格的当前操作行
          var current_tr = oat.children[oa_cur_row];
          //如果不是关联,则不做处理
          if (current_tr.children[0].children[0].value != "relation" && current_tr.children[0].children[0].value != "update"){
             return;
          }
          var attr_id = ctr.children[4].innerText;
          var attr_name = ctr.children[5].innerText;
          //如果已经存在这个ATTRID的映射,则不做处理
          var isExist = false;
          var oatbody = current_tr.parentElement;
          for (var i = 1; i < oatbody.children.length; i++){
             if (oatbody.children[i].children[5].innerText == attr_id){
                isExist = true;
                break;
             }
          }
          //不存在已有的映射,赋值
          if (!isExist){
             current_tr.children[5].innerText = attr_id;
             current_tr.children[6].innerText = attr_name;
             current_tr.style.backgroundColor = operatedColor;
          }
       }
    }
    //完成字段映射
    function finishedFieldMap(){
       if (!confirm("字段映射完成之后将不可更改,请确认映射完成。并进行用户的迁移操作。")) return;
       document.attrOperateForm.action = "userTransferAction.do?action=finishMap";
       document.attrOperateForm.submit();
    }
    //---------用户操作的变量--------//
    //-------用户操作部分函数-----------//
    //外部用户表格
    var out;
    //用户表格
    var uut;
    //user操作的当前行
    var ou_cur_row;
    //当前用户表格行
    var uu_cur_row;
    //uums中的用户,用TR对象存储
    var uums_users_trs;
    //uums表格userId的所在列
    var uid_cell;
    //uums表格username的所在列
    var uname_cell;
    //用户ID的列
    var oid_cell;
    //用户名的列
    var oname_cell;
    //要更新的用户的字符串
    var updateUserString = "";
    //------------用户操作的方法----------------//
    ///改变用户操作事件
    function changeOperateUser(oldValue,sele){
       var newValue = sele.value;
       if (oldValue == newValue) return;
       //如果是新增
       var current_tr = sele.parentElement.parentElement;
       if (newValue == "1"){
          //如果已经有了对应关系,则删除
          current_tr.children[1].innerText = "";
       } else if (newValue == "2"){ //如果是关联
          alert("请选择中的用户与之对应!");
       } else if (newValue == "3"){
          if (!confirm("如果选择不操作此用户将不会被迁移,请确认不迁移这个用户。")){
             sele.value = oldValue;
          }
       }
    }
    //TR改变方法
    function ouRowClick(tr){
       alert("ouRowClick(tr)");
       var current_tr = out.children[ou_cur_row];
       current_tr.style.background = blankColor;
       //如果未改变的当前行选中为更新,但又没有表的记录与之映射,则将其设为未选择操作
       if (current_tr.children[0].children[0].value == "2" && current_tr.children[1].innerText == ""){
          alert("第 " + ou_cur_row + " 行没有确定要更新的用户,操作无效。");
          current_tr.children[0].value = "0";
       }
       ou_cur_row = tr.rowIndex;
       tr.style.backgroundColor = selectedColor;
       alert(oid_cell);
       var userId = tr.children[oid_cell].innerText;
       var userName = tr.children[oname_cell].innerText;
       //过滤用户
       uumsUserFilter(userId,userName);
    }
    //用户表格过滤方法
    function uumsUserFilter(userId,userName){
       var matchTrs new Array();
       var j = 0;
       //从缓存中查找相似的记录
       for (var i = 0; i < uums_users_trs.length; i++){
          var ttr = uums_users_trs[i];
          var user_id = ttr.children[uid_cell].innerText;
          var user_name = ttr.children[uname_cell].innerText;
          if (user_id == "userId" || user_name == "username"){
             matchTrs[j++] = ttr;
          }
       }
       //删除表格中原来的数据
       for (var i = 0; i < uut.children.length; i++){
          uut.removeChild(uut.children[i]);
          i--;
       }
       //将查询到的结果加入表中显示
       for (var i = 0; i < matchTrs.length; i++){
          uut.insertRow(matchTrs(i));
       }
    }
      

  3.   

    代码3:
    汗。。太长了//初始化方法,取得userId,userName在表格中的位置,以便于查询
    //将用户表格的数据缓存,用来过滤
    function init(){
       alert("init start");
       uums_users_trs = new Array();
       //用户表格
       out = document.getElementById("outerUserTable").children[0];
       uut = document.getElementById("uumsUserTable").children[0];
       //属性表格
       oat = document.getElementById("outerAttrTable").children[0];
       uat = document.getElementById("uumsAttrTable").children[0];
       //将表缓存
       for (var i = 1; i < uut.children.length; i++){
          uums_users_trs[i - 1] = uut.children[i];
       }
       //确定userId与username在表格中的位置
       var outhead = out.children[0];   alert(out.tagName);
       for (var i = 0; i < outhead.children.length; i++){
          var td = outhead.children[i];
          if (td.innerText == "userId"){
             oid_cell = i;
             continue;
          }
          if (td.innerText == "username"){
             oname_cell = i;
          }
       }
       //确定中userId所有列
       var uuthead = uut.children[0];
       for (var i = 0; i < uuthead.children.length; i++){
          var td = uuthead.children[i];
          if (td.innerText == "userId"){
             uid_cell = i;
             continue;
          }
          if(td.innerText == "username"){
             uname_cell = i;
          }
       }
       //设置当前行
       oa_cur_row = 1;
       ua_cur_row = 1;
       ou_cur_row = 1;
       alert("init end");
      // var current_tr = out.children[ou_cur_row];
    }
    //去除字符串的空格
    function trimSpace(str){
       var tv = "";
       for (var j = 0; j < str.length; j++){
          if (str.charAt(j) != ' '){
             tv += str.charAt(j);
          }
       }
       return tv;
    }
    </script>
    <body bgcolor="#ffffff">
    <form method="post" action="userTransferAction.do?action=changeApp" name="appForm">
       <table width="92%" align="center">
          <tr>
             <td width="20%">请选择应用系统:</td>
             <td width="80%"><select name="app" onchange="if(this.value != '')document.appForm.submit();">
                <option value="">未选择</option>
                   <option value="2">测试</option>
             </select></td>
          </tr>
       </table>
    </form>
    <form name="attrOperateForm" action="userTransferAction.do?action=updateAttr" method="post">
       <table border="1"  width="96%" align="right">
          <tr>
             <td width="50%" valign="top" >新系统用户表信息</td>
             <td width="50%" valign="top">系统用户表信息</td>
          </tr>
          <tr>
             <td  width="50%" valign="top">
                   <table id="outerAttrTable" border="1" width="100%"  onclick="oaClickTable();">
                         <tr>
                            <td>操作</td>
                            <td>老字段</td>
                            <td>老字段类型</td>
                            <td>新字段</td>
                            <td>新字段类型</td>
                            <td>字段编码</td>
                            <td>字段说明</td>
                         </tr>
                            <tr>
                               <td>
                                  <select name="attrOperate2" disabled="true">
                                     <option value="none">None</option>
                                     <option value="relation">修改</option>
                                  </select>
                               </td>
                               <td>age</td>
                               <td>int</td>
                               <td>age</td>
                               <td>int</td>
                               <td>age</td>
                               <td>age</td>
                            </tr>
                </table>
             </td>
             <td width="50%" valign="top">
                <table id="uumsAttrTable" border="1" width="100%" onclick="uaClickTable();">
                      <tr>
                         <td>字段名</td>
                         <td>字段类型</td>
                         <td>长度</td>
                         <td>默认值</td>
                         <td>字段编码</td>
                         <td>字段说明</td>
                      </tr>
                         <tr>
                            <td>PASSWORD</td>
                            <td>VARCHAR</td>
                            <td>50</td>
                            <td></td>
                            <td>password</td>
                            <td>密码</td>
                         </tr>
                </table>
             </td>
          </tr>
          <tr>
             <td>
             </td>
             <td>
                <input type="hidden" name="addString"/>
                <input type="hidden" name="updateString"/>
                <input type="hidden" name="relationString"/>
             </td>
          </tr>
       </table>
    </form>
       <script language="JavaScript">
          document.attrOperateForm.butSave.disabled = "true";
          document.attrOperateForm.butReset.disabled = "true";
          document.attrOperateForm.butFinish.disabled = "true";
       </script>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <form action="userTransferAction.do?action=getUser" name="getUserForm" method="post">
    <table border="1" align="right" width="96%">
          <tr>
             <td width="50%">请输入要迁移用户的条件:<input type="text" size="40" name="sqlWhere"/> </td>
             <td width="50%"><input type="button" value="获取用户" onclick="document.getUserForm.submit();"/> </td>
          </tr>
    </table>
    </form>
       <br><br><br>
    <form name="userTransferForm" action="userTransferAction.do?action=updateUser" method="post">
       <table border="1" align="right" width="96%">
          <tr width="50%">
             <td valign="top">
                <table id="outerUserTable" width="100%"  border="1">
                      <tr>
                          <td>请选择操作</td>
                          <td>关联用户(ID)</td>
                              <td>bir</td>
                              <td>age</td>
                              <td>password</td>
                              <td>userId</td>
                              <td>username</td>
                              <td>id</td>
                      </tr>        
                </table>
             </td>
                </table>
             </td>
          </tr>
       </table>
    </form>
    <script language="javascript">
       alert("asdaa");
       init();
    </script>
    </body>
      

  4.   

    Amwpfiqvy:
    这个不需要检查哈,之前都可以运行,改了几行代码突然不行了。。
    就是自己都不记得改的哪里了。
      

  5.   

    感谢各位。。
    问题找到了。。晕菜
    var matchTrs new Array();