2012-09-25 86 views
0

我必须延迟几秒钟的重定向。当我尝试这样做时,它不起作用。我已经附上我的Javascript和PHP下面。任何人都可以请帮我解决problem.window位置不工作。设置超时的窗口位置

<script type="text/javascript"> 
    // constants to define the title of the alert and button text. 
var ALERT_TITLE = "Answer"; 
var ALERT_BUTTON_TEXT = "Ok"; 

// over-ride the alert method only if this a newer browser. 
// Older browser will see standard alerts 
if(document.getElementById) { 
    window.alert = function(txt) { 
     createCustomAlert(txt); 
    } 
} 

function createCustomAlert(txt) { 
    // shortcut reference to the document object 
    d = document; 

    // if the modalContainer object already exists in the DOM, bail out. 
    if(d.getElementById("modalContainer")) return; 

    // create the modalContainer div as a child of the BODY element 
    mObj = d.getElementsByTagName("body")[0].appendChild(d.createElement("div")); 
    mObj.id = "modalContainer"; 
    // make sure its as tall as it needs to be to overlay all the content on the page 
    mObj.style.height = document.documentElement.scrollHeight + "px"; 

    // create the DIV that will be the alert 
    alertObj = mObj.appendChild(d.createElement("div")); 
    alertObj.id = "alertBox"; 
    // MSIE doesnt treat position:fixed correctly, so this compensates for positioning the alert 
    if(d.all && !window.opera) alertObj.style.top = document.documentElement.scrollTop + "px"; 
    // center the alert box 
    alertObj.style.left = (d.documentElement.scrollWidth - alertObj.offsetWidth)/2 + "px"; 

    // create an H1 element as the title bar 
    h1 = alertObj.appendChild(d.createElement("h1")); 
    h1.appendChild(d.createTextNode(ALERT_TITLE)); 

    // create a paragraph element to contain the txt argument 
    msg = alertObj.appendChild(d.createElement("p")); 
    msg.innerHTML = txt; 

    // create an anchor element to use as the confirmation button. 
    btn = alertObj.appendChild(d.createElement("a")); 
    btn.id = "closeBtn"; 
    btn.appendChild(d.createTextNode(ALERT_BUTTON_TEXT)); 
    btn.href = "#"; 
    // set up the onclick event to remove the alert when the anchor is clicked 
    btn.onclick = function() { removeCustomAlert();return false; } 


} 

// removes the custom alert from the DOM 
function removeCustomAlert() { 
    document.getElementsByTagName("body")[0].removeChild(document.getElementById("modalContainer")); 
} 

    function handler(var1,quizId,isCorrect,score) { 
     alert(var1); 
     //var id = parseInt(quizId); 
     quizId++; 
     var points=10;  
     if(isCorrect=='true'){ 
      score=score+points; 
      var string_url="quiz.php?qusId="+quizId+"&score="+score; 
      setTimeout('window.location =string_url',5000) ; 
     } 
     else{ 
      var string_url="quiz.php?qusId="+quizId+"&score="+score; 
      setTimeout('window.location =string_url',5000) ; 
      } 


    } 

    </script> 

while($row1=mysql_fetch_array($result1)){ 

    ?><input type="radio" name="answers" value="<?php echo $row1['answers'];?>" onclick="handler('<?php echo $row1["feedback"]; ?>',<?php echo $qusId;?>,'<?php echo $row1["isCorrect"]; ?>',<?php echo $score;?>) 
"/ ><?php echo $row1['answers']; ?><br/> 







<?php 
} ?> 

回答

2

的setTimeout的第一个参数应该是一个函数。试着用匿名函数进行包装,就像这样:

setTimeout(function() { 
    window.location = string_url 
}, 5000); 
0

试试这个:

`setTimeout("createCustomAlert(txt);", 3000);`