这里我有一个简单的倒计时功能,可以在5秒后重定向用户。
<script type="text/javascript">
var timer = 5;
var counter = document.getElementById("countdown");
function countdown(target)
{
counter.innerHTML = timer--;
if (timer >= 0)
{
setTimeout(function () {
countdown();
}, 1000);
}
else
{
// Redirect the user
console.log(target); // Outputs "undefined" after 5 seconds
if (!typeof target === "undefined")
{
window.location.href = target;
}
}
};
var target = "/account/";
countdown(target);
</script>
问题是,当经过5秒并且window.location.href
进行重定向时,&#34;目标&#34;变量未定义,我不确定为什么会发生这种情况。
我已经研究并尝试了各种解决方案,甚至设定了&#34;目标&#34;方式&#34;计时器&#34;和&#34;计数器&#34;已设定,但均无效。我的目标是设定一个不同的目标&#34;在每个功能实例。
更新:将countdown();
设置为countdown(target);
修复了&#34; undefined&#34;问题,但window.location.href
对象仍然没有重定向到target
变量值,可以采取哪些措施来解决这个问题?
答案 0 :(得分:1)
您需要在setTimeout
中将目标传递给倒计时function countdown(target)
{
counter.innerHTML = timer--;
if (timer >= 0)
{
setTimeout(function () {
countdown(target);
}, 1000);
}
else
{
// Redirect the inactive user to the homepage
console.log(target); // Outputs "undefined" after 5 seconds
if (!typeof target === "undefined")
{
window.location.href = target;
}
}
};
答案 1 :(得分:1)
知道了,由于某种原因,if (!typeof target === "undefined")
仍然返回true,即使target
确实已定义,导致window.location.href
无法启动并重定向到target
值。
更新:我这样做的方式错误,这是一个分组问题,但使用if (typeof target !== "undefined")
会使其按预期工作。
我分享了固定代码以防其他人:
<script type="text/javascript">
var timer = 5;
var counter = document.getElementById("countdown");
function countdown(target)
{
counter.innerHTML = timer--;
if (timer >= 0)
{
setTimeout(
function()
{ countdown(target); }, 1000
);
}
else
{
// Redirect the user
if (typeof target !== "undefined")
{
window.location.href = target;
}
}
};
var target = "/MixaPay/";
countdown(target);
</script>
感谢所有贡献的人。
答案 2 :(得分:0)
这是你的问题,当你再次调用倒计时功能时,你应该发送“目标”对象。
setTimeout(function () {
countdown(); // should be: countdown(target);
}, 1000);
答案 3 :(得分:0)
尝试这个,它的工作,你忘了在你的函数中传递参数。
var timer = 5;
var counter = document.getElementById("countdown");
function countdown(timer,target){
counter.innerHTML = timer--;
if (timer > 0)
{
setTimeout(function () {
countdown(timer,target);
}, 1000);
}
else
{
// Redirect the inactive user to the homepage
console.log(target); // Outputs "undefined" after 5 seconds
if (!typeof str === "undefined")
{
window.location.href = target;
}
}
};
var target = "/account/";
countdown(timer,target);
答案 4 :(得分:0)
尝试使用完整网址而不是使用绝对网址重定向,而不是package main
import (
"fmt"
"io"
"net/http"
"os"
"path/filepath"
"sync"
)
func download_file(file_path string, wg sync.WaitGroup) {
defer wg.Done()
resp, _ := http.Get(file_path)
defer resp.Body.Close()
filename := filepath.Base(file_path)
file, _ := os.Create(filename)
defer file.Close()
size, _ := io.Copy(file, resp.Body)
fmt.Println(filename, size, resp.Status)
}
func main() {
var wg sync.WaitGroup
file_list := []string{
"http://i.imgur.com/dxGb2uZ.jpg",
"http://i.imgur.com/RSU6NxX.jpg",
"http://i.imgur.com/hUWgS2S.jpg",
"http://i.imgur.com/U8kaix0.jpg",
"http://i.imgur.com/w3cEYpY.jpg",
"http://i.imgur.com/ooSCD9T.jpg"}
fmt.Println(len(file_list))
for _, url := range file_list {
wg.Add(1)
fmt.Println(wg)
go download_file(url, wg)
}
wg.Wait()
}
使用/account/
更新这必须有效我已经测试了
localhost/account/