封装了个js方法,结果要加上alert()才能运行,而且不会显示alert框?

   </body>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/linkUrl.js"></script>     
</html>

 

<a  href="#"    
onclick="javascript:linkUrl('${pageContext.request.contextPath}/wap/login/register.jsp?topColumnId=${i_TopColumnID}')">
注册</a>|

 

/*
* 功能 : 将如"register.jsp?name=a&pwd=a"的链接改成form提交,以达到隐藏表单。
* 使用:将<a href="register.jsp?name=a&pwd=a">注册</a>|替换这
*       <a  href="#" onclick="linkUrl('register.jsp?name=a&pwd=a')">注册</a>|
* 
*/
function linkUrl(allUrl){
         var url,queryString,oneArray,twoArray,name,value,turnForm,turnInput;
        //1 创建form
         turnForm = document.createElement("form");
         document.body.appendChild(turnForm);
         //2 解析完整url,加入隐藏域
         alert(allUrl);
         url = allUrl.substring(0,allUrl.indexOf("?"));
         queryString = allUrl.substr(allUrl.indexOf("?")+1);
        // alert(url);
        // alert(queryString);
        oneArray = queryString.split("&");
        for(var i=0;i<oneArray.length;i++){
            twoArray = oneArray[i].split("=");
            name = twoArray[0];
            value = twoArray[1];
            //alert(name);
            //alert(value);
            turnInput = document.createElement("input");
            turnInput.type = "hidden";
            turnForm.appendChild(turnInput);
            turnInput.name = name;
            turnInput.value = value;
            
        }
        //3 提交 
        turnForm.action=url;
        turnForm.method = "post";
        turnForm.submit();
    }

   结果要加上 13行 alert(allUrl);
的那一句才能正常执行,否则就报找不到action的错误。 太神奇了。求教。

加了个alert出现效果,说明alert延长了时间。
不加alert不能出现效果说明DOM组装还没有完成。

没怎么看你的js 你搜一下是不是有id="linkUrl"也就是id名和你onclikk方法名一样了。如果没有将你a标签里的#换乘JavaScript:void(0);

没仔细看代码,不过这是一个典型的异步调用错误。
因为你在ajax返回之前进行了后一步的操作(如操作DOM)。
只要将所有的操作放到ajax的callback中去就可以了...