日期:2014-05-16  浏览次数:20340 次

求高手解答.....js疑惑
我在页面做一个复制的功能, 也就是在js中获取上一个标签的内容放到下一个标签、  第一次始终复制不了上一次的内容。(所传参数这些都是对的)、 下一次就可以正常复制、
   最奇怪的地方时: 我在js中alert();下随便什么东西,在页面上点击确定就能正确把上一个标签的内容复制到下一个标签、
   不用alert();打死就复制不了东西.  求解答啊、 按常理来说js代码应该是对的.

------解决方案--------------------
把代码贴出来看看!!
------解决方案--------------------
代码太长,粗略看了一下。
一般来说第一次不行,第二次可以或者需要中断alert才可以,一般情况是你的javascript还没有载入完。
一般用一个setTimeout(aaa,500)延迟一点执行,或者使用回调方式确保执行顺序就可以了。
------解决方案--------------------
目测是点击的时候发送了ajax请求,ajax请求回来后,生成一定的DOM结构,

第一次点的时候请求还没回来,所以造成后续操作无效。

把loadJSP方法添加一个回调函数,请求成功后执行这个回调。
//绑定标签复制事件

$('.copyTag').live("click",function(event){
if (confirm("确认复制该标签的值到新标签吗?")) {
if ($('#tagUl li').length > 10) {
alert("标签不能大于10个");
return false;
}else{

//点击得到标签序号
var tag  = $(this).parent().attr('name');
 
// 取得标签的个数
var number = $('.listDiv').length;
 
// 获取申请类型
var type = $('#paramType').val();

// 获取标签显示的数字
var copyNumber = $('#copyNumber').val();
 
loadJSP(function(){
   // 判断是否是编辑进来。
   if($('#edCopy').val() == 1){ 
       $('#edCopy').val(0);
  
       // 调复制的JS
       copyType1(tag,type,number);  
   }else{

       // 调复制的JS
       copyType1(tag,type,copyNumber);
   }
}
});
}
 event.stopPropagation();
});
};

function loadJSP(callback){
if(HTMLContent == null){

if(document.all){ // browser condition

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
xmlhttp = new XMLHttpRequest();
}

typeValue = paramType.value;
$('#change_btn input').css("display","none");
$('#paramType'+typeValue).siblings().css("display","block");
var url = '${basePath}/pages/param/param_type'+typeValue+'.jsp';
// ajax load
xmlhttp.open("POST",url,true);
xmlhttp.onreadystatechange = function(){

if(xmlhttp.readyState == 4){
HTMLContent = xmlhttp.responseText;
addToHtml();
callback && typeof callback === 'function' && callback();//成功后执行回调。
}
};

xmlhttp.send(null);
return;

}

addToHtml(); //if HTMLContent is not null,这句就不用了吧。
};