好的,所以我有一个计数器,它一次只能计数一秒。这个第二个计数器我希望它是我的会话变量。这个坏主意吗?此外,当我在第二页上执行isset时,它在我的第二页上显示"您的会话正在运行0"。我确保在我的页面开始时我的php会话周围没有额外的白色位置,但我不认为这是问题所在。我也试过在我的countUP函数上应用清除间隔,但它不起作用?我非常感谢任何帮助。
第一页.php
<?php session_start();
if(!isset($_SESSION["counter"])){ //checkingto see if a variable called my score exist
$_SESSION["counter"]=0; //if not, initates this variable with 100
}
?>
第一页_javascript
<script type="text/javascript">
var counter=0; //initiates score to 100
var timer_container = document.getElementById("timer_container"); //get div that wil display the score
timer_container.innerHTML="Time = " + counter; //popo
var timer;
function countUP() {
counter = counter +1;//increment the counter by 1
//display the new value in the div
document.getElementById("timer_container").innerHTML = counter;
} </script>
使page2.php
<?php session_start();
if(isset($_SESSION['counter'])){
echo "Your session is running ".$_SESSION['counter'];
}
else { echo "Session not running";}
?>
javascript第2页
<script type="text/javascript">
var counter=<?php echo $_GET['counter'];?>; //initiates score to 100
var timer_container =document.getElementById("timer_container"); //get div that will display the score
timer_container.innerHTML="Time="+counter;
//var timer;
function countUP() {
counter = counter+1; //increment the counter by 1
//display the new value in the div
document.getElementById("timer_container").innerHTML = counter;
} </script>
我之前在另一场比赛中使用了它,它完美无缺。感谢
答案 0 :(得分:0)
没有看到你的html,但你可能会遗漏一些东西要启动并运行计时器功能 - 这可能会丢失:
<body onload="intTimer = setInterval(function(){ countUP() }, 1000);">
此外,我不太清楚你是如何提交页面的,但我看不到任何将计时器的值传递给会话变量的内容。如果您使用提交按钮在页面上放置一个表单,那么您可以获取隐藏输入的值,其值使用javascript设置。如果您需要,当计数器达到某个数字时,您可以在javascript中使用submit();
自动提交页面:
page1.html
(可以称为page1,php
,但第1页中没有php,因此实际上没有必要)
<!DOCTYPE html>
<html>
<head>
<title>Page 1</title>
<script language="javascript">
var intTimer = '';
var counter = 0;
function countUP(){
counter++; //increment the counter by 1
//display the new value in the div
document.getElementById("timer_container").innerHTML = "Session Time Counter: " + counter;
document.getElementById("tim_val").value = counter;
}
</script>
</head>
<body onload="intTimer = setInterval(function(){ countUP() }, 1000);">
<form name="form" id="form" action="page2.php" method="post">
<input type="hidden" id="tim_val" name="tim_val" value="" />
<input type="submit" name="submit"/>
</form>
<div id="timer_container">Session Time Counter: 0</div>
</body>
</html>
您没有在第1页上引用$_SESSION["counter"]
,而您在JavaScript中初始化为0而不是100。
在您的第2页脚本page2.php
中,您可以使用此功能 - 如果只需要更改部分内容但是计时器需要继续或在提交。
<?php session_start();?>
<!DOCTYPE html>
<html>
<head>
<title>Page 2</title>
<?php
if(!isset($_SESSION["counter"])){
//if not, initiate this variable with 100
$_SESSION["counter"] = 100;
}else{
// give it the posted value
$_SESSION["counter"] = (int) $_POST['tim_val'];
}
?>
<script language="javascript">
clearInterval(intTimer);
var intTimer = '';
var counter = <?php echo $_SESSION["counter"]; ?>;
function countUP(){
counter++; //increment the counter by 1
//display the new value in the div
document.getElementById("timer_container").innerHTML = "Session Time Counter: " + counter;
document.getElementById("tim_val").value = counter;
}
</script>
</head>
<body onload="intTimer = setInterval(function(){ countUP() }, 1000);">
<form name="form" id="form" action="page2.php" method="post">
<input type="hidden" id="tim_val" name="tim_val" value="<?php echo $_SESSION["counter"]; ?>" />
<input type="submit" name="submit"/>
</form>
<div id="timer_container">Session Time Counter: <?php echo $_SESSION["counter"]; ?></div>
</body>
</html>
在您的page2.php JavaScript中,您需要clearInterval()
并重新启动它。 http://www.w3schools.com/jsref/met_win_clearinterval.asp
var counter=<?php echo intval($_SESSION["counter"]);?>; //initiates score to submitted value
您可能不需要使用会话变量,因为您正在使用隐藏输入,因此您可以使用:
var counter=<?php echo intval($_POST["counter"]);?>; //initiates score
您还可以向其添加1
,以便大致考虑提交延迟的时间
var counter = <?php echo $_SESSION["counter"] + 1; ?>;
var counter=<?php echo intval($_POST["tim_val"] + 1);?>; //initiates score
您可以坚持使用GET
,但我更喜欢POST
。
这有关隐藏输入的更多信息: Get and echo inputs from textarea repeatedly
以及有关计时器脚本的更多信息: http://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_clock