gpt4 book ai didi

php - 两个循环 JS 函数相互冲突

转载 作者:行者123 更新时间:2023-12-02 19:26:04 26 4
gpt4 key购买 nike

所以我有这两套 JavaScript 函数,它们不断地控制我的服务器,如果数据库已更新,这些函数就会执行某些操作。两组功能彼此无关;它们唯一的关系是它们同时发生。然而由于某种原因,一种功能与另一种功能发生冲突。我的代码如下所示:

<!DOCTYPE html>
<html>
<head>
<title>Stage</title>
<link href="stage.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript">

///////////////////// FUNCTION SET 1

function loadThumbnail(){
$.ajax({
url: 'process_stage_show.php',
data: 'value=<?php echo $_GET["session"]; ?>',
dataType: 'json',
success: function(data){
var idCurrent = data[0];
var idVideo = data[1];
var idSession = data[2];
var state = data[4];
if (state == 1) {
$('#tv').html('<img src="http://i.ytimg.com/vi/'+ idVideo +'/hqdefault.jpg" width ="800" height="533"/>');
setTimeout(function(){timedCount2(idCurrent);},1000);
}
else {
setTimeout(function(){timedCount2(idCurrent);},1000);
}
}
});
}

function timedCount2(idCurrent){
$.ajax({
url: 'process_stage_show.php',
data: 'value=<?php echo $_GET["session"]; ?>',
dataType: 'json',
success: function(data) {
var idNew = data[0];
var idVideo = data[1];
var idSession = data[2];
var state = data[4];
if (!(idCurrent == idNew)) {
window.location.reload();
}
else{
setTimeout(function(){timedCount2(idCurrent);},1000);
}
}
});
}

///////////////////// FUNCTION SET 2

function loadStage(){
$.ajax({
url: 'process_stage_play.php',
data: 'value=<?php echo $_GET["session"]; ?>',
dataType: 'json',
success: function(data){
var idVideo = data[0];
var idCurrent = data[1];
var idSession = data[2];
var state = data[4];
if (state == 2) {
//alert("State equal to 2. Do nothing.");
setTimeout(function(){timedCount(idCurrent);},1000);
}
else if (state == 1) {
//alert("State equal to 1. Open window.");
popupwindow = window.open ("http://www.youtube.com/watch_popup?v="+ idVideo);
setTimeout(function(){timedCount(idCurrent);},1000);
}
else if (state == 0) {
//alert("State equal to 0. Close window.");
popupwindow.close();
setTimeout(function(){timedCount(idCurrent);},1000);
}
}
});
}

function timedCount(idCurrent){
$.ajax({
url: 'process_stage_play.php'
data: 'value=<?php echo $_GET["session"]; ?>',
dataType: 'json',
success: function(data) {
var idVideo = data[0];
var idNew = data[1];
var idSession = data[2];
var state = data[4];
if (idCurrent == idNew) {
setTimeout(function(){timedCount(idCurrent);},1000);
}
else{
//alert("ID has changed. Re-load stage.");
loadStage();
}
}
});
}

</script>
</head>

<body onload="loadStage(); loadThumbnail();">

<div id="tv"></div>

</body>
</html>

我不想详细介绍这些函数集的作用(除非有要求),因为我不希望这篇文章太长。但问题是这两组函数本身工作得很好,但由于某种原因,如果你同时运行它们,第二个函数集会一直说当 state 等于 0 时 popupwindow 未定义。

这毫无意义!为什么第一个功能集会导致这种情况发生? :(

最佳答案

第一个函数有时所做的事情之一就是重新加载窗口。一旦发生这种情况,全局变量“popupwindow”就会消失。

让弹出窗口中的代码定期检查其“开启器”窗口以查看它是否应该自行关闭可能会起作用。

关于php - 两个循环 JS 函数相互冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com