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

实在是找不到原因了,请大家帮帮忙?
我先把一段lrc歌词文字通过ajax写入 <span   id= "lrcdata "   style= "display:none "> </span> 中。然后希望用document.getElementById( "lrcdata ").innerHTML在读取出来,但是第一次读取总是为空,需要第二次读取才可以。但奇怪的是我在取之前加入一个alert( "哈哈 ")后就读取成功了。但是在实际的运用中是不允许alert()提示框的。请问alert()不就是暂定js程序嘛?在这里么会影响到后面的读取成败呢?

下面是我以上所说的主要步骤:

function   playList_dblClick()         //处理双击事件
{    
GetLrc(LrcName);       //利用ajax中的方法GetLrc()获取.Lrc文件的内容,并写入 <span   id= "lrcdata ">
                        //   alert( "哈哈 ");
                                alert(lrcdata.innerHTML);
}


//ajax部分
function   GetLrc(LrcName)
{  
      send_request( "readLrc.asp?LrcName= "+LrcName);
}

//把返回的结果写入 <span   id= "lrcdata ">
function   processRequest()
{
      document.getElementById( "lrcdata ").innerHTML=http_request.responseText;
}

------解决方案--------------------
应该在回调函数执行完毕后再取值,否则就是现在的结果。
简单改了一下,试试 @_@

function playList_dblClick() //处理双击事件
{
GetLrc(LrcName); //利用ajax中的方法GetLrc()获取.Lrc文件的内容,并写入 <span id= "lrcdata ">
}


//ajax部分
function GetLrc(LrcName)
{
send_request( "readLrc.asp?LrcName= "+LrcName);
}

//把返回的结果写入 <span id= "lrcdata ">
function processRequest()
{
document.getElementById( "lrcdata ").innerHTML=http_request.responseText;

// 这次应该可以了
alert(lrcdata.innerHTML);
}