Javascript 一个可以发布更好的解决方案,我很想看到它
是什么让它最终起作用的(与其说是解决方案,不如说是解决方案) 我在加载循环的末尾添加了一个测试,以检查我是否在最后一次迭代中,然后执行Javascript 一个可以发布更好的解决方案,我很想看到它,javascript,jquery,html,Javascript,Jquery,Html,是什么让它最终起作用的(与其说是解决方案,不如说是解决方案) 我在加载循环的末尾添加了一个测试,以检查我是否在最后一次迭代中,然后执行。click() LoadEvents() { var-xhttp; var事件列表; xhttp=newXMLHttpRequest(); xhttp.onreadystatechange=函数() { if(this.readyState==4&&this.status==200) { EventList=this.responseText.split(“,”
。click()
LoadEvents()
{
var-xhttp;
var事件列表;
xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数()
{
if(this.readyState==4&&this.status==200)
{
EventList=this.responseText.split(“,”);
//清除列表
$(“#事件”).empty();
forEach(函数(项、索引、数组)
{
如果(项目!==“”)
{
$ID=项目。拆分(“;”)[0];
$(“#events”).append(“”+item.split(“;”[1]+” ”);
}
if(index==EventList.length-1)
{
$(“#”+选择EDID)。单击();
}
});
}
};
xhttp.open(“GET”,“DataLink2.php?con=GetFullEvents&orderby=“+$orderby,true”);
xhttp.send();
}
如果有人能发布更好的解决方案,我很乐意看到 你试过在dom ready中包装你的js代码吗?@gauravmuk抱歉我对js很陌生,我不确定你在问什么。@gauravmuk啊,只是在谷歌上搜索了一下,是的,它是按照建议包装的。你能演示一下如何从服务器加载
EventList
吗?以下是你需要做的事情你尝试过在dom ready中包装你的js代码吗?@gauravmuk抱歉,我对js很陌生,我不确定你在问什么。@gauravmuk啊,只是在谷歌上搜索了一下,是的,它是按照建议包装的。你能展示一下你是如何从服务器加载事件列表的吗?以下是你需要做的事情,谢谢你解释发生了什么,非常感谢,这将给我一些进一步的谷歌材料。如果您对如何纠正问题有任何建议,请让我知道。只需提供检索代码(即“如果相关,可以发布代码”),因为实际解决方案取决于所使用的异步API。您如何调用php代码?换言之,“获取事件列表的代码”有什么作用?抱歉,现在补充道,我一直担心我的问题会被不必要的代码弄得一团糟。我似乎无法让它发挥作用,我可能真的很笨,但是什么改变了预选
的状态?感谢您对发生的事情的解释,非常感谢,这将给我一些进一步的谷歌材料。如果您对如何纠正问题有任何建议,请让我知道。只需提供检索代码(即“如果相关,可以发布代码”),因为实际解决方案取决于所使用的异步API。您如何调用php代码?换句话说,“在这里获取事件列表的代码”有什么作用?抱歉,现在补充道,我一直担心我的问题会被不必要的代码弄得一团糟。我似乎无法让它正常工作,我可能真的很笨,但是什么改变了预选的状态?
?谢谢你的建议,我的问题不是存储id,我可以将其传递到函数中,问题是让一个函数等待另一个函数完成。感谢您的建议,我的问题不是存储id,我可以将其传递到函数中,问题是让一个函数等待另一个函数完成。
<ul id="events" class="select" name="events" style="width:40vw;"></ul>
LoadEvents()
{
var xhttp;
var EventList;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (this.readyState == 4 && this.status == 200)
{
EventList = this.responseText.split(",");
//Clear List
$('#events').empty();
EventList.forEach(function(item, index, array)
{
if(item !== "")
{
$ID = item.split(";")[0];
$('#events').append('<li class="event" id=\"' + $ID '\">' + item.split(";")[1] + '</li>');
}
});
}
};
xhttp.open("GET", "DataLink2.php?con=GetFullEvents&orderby=" + $OrderBy, true);
xhttp.send();
}
var selectedid;
//Within the function that requests the refresh I do
selectedid = $('#events').find('li.selected').attr('id');
//calling the refresh function
LoadEvents();
//And trying to reselect the item in the list
$('#' + selectedid).click();
$.when(LoadEvents()).then($('#' + selectedid).click());
$connect = mysqli_connect($host_name, $user_name, $password, $database);
if(mysqli_connect_errno())
{
$query = "SELECT * FROM `Events` WHERE `FinishTime` > '00:00:00' ORDER BY `FinishTime` DESC";
//Query Result
if ($result = mysqli_query($connect, $query))
{
/* fetch associative array */
while ($obj = mysqli_fetch_object($result))
{
printf ("%s,", $obj->ID.";".$obj->EventName;
}
/* free result set */
mysqli_free_result($result);
}
else
{
echo '<p>Connection failed.</p>';
}
}
LoadEvents(preselect)
{
if (typeof preselect === 'undefined') {
preselect = false;
}
var xhttp;
var EventList;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (this.readyState == 4 && this.status == 200)
{
EventList = this.responseText.split(",");
//Clear List
$('#events').empty();
EventList.forEach(function(item, index, array)
{
if(item !== "")
{
$ID = item.split(";")[0];
$('#events').append('<li class="event" id=\"' + $ID '\">' + item.split(";")[1] + '</li>');
}
});
if (preselect) {
//And trying to reselect the item in the list
$('#' + selectedid).click();
}
}
};
xhttp.open("GET", "DataLink2.php?con=GetFullEvents&orderby=" + $OrderBy, true);
xhttp.send();
}
LoadEvents()
{
var xhttp;
var EventList;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (this.readyState == 4 && this.status == 200)
{
EventList = this.responseText.split(",");
//Clear List
$('#events').empty();
EventList.forEach(function(item, index, array)
{
if(item !== "")
{
$ID = item.split(";")[0];
$('#events').append('<li class="event" id=\"' + $ID '\">' + item.split(";")[1] + '</li>');
}
if (index == EventList.length - 1)
{
$('#' + selectedid).click();
}
});
}
};
xhttp.open("GET", "DataLink2.php?con=GetFullEvents&orderby=" + $OrderBy, true);
xhttp.send();
}