setTimeout()函数不起作用

时间:2013-12-22 18:49:43

标签: javascript settimeout

任何人都可以帮助建议为什么这个setTimeout()功能不起作用?我在网上尝试了很多版本,但它仍无法正常工作。

<script type="text/javascript">
function makeSlection(frm, proj, tenure, address, postal, cat, parent, estate, latlng, district, state) {
    alert(proj);
    alert('hello im inside makeselection function');

    opener.projectn.value = proj;
    opener.tenure.value = tenure;
    opener.address.value = address;
    opener.postcode.value = postal;
    opener.category.value = parent;     
    opener.category.onchange();

    opener.state.value = state;
    opener.region.value = estate;
    opener.add.value = latlng;
    opener.latlngse.click();

    //setTimeout(function(){alert('hi');},3000);
    setTimeout(function(){ pelay(cat); },5000);
}

function pelay(cate){
    alert(cate);
    opener.category_id.value = cate;
    this.close;
}

</script>
<body>
 Please select project name.
 <form id="fsrm" name="fsrm" action="#">
 <table width="100%">
 <?php
  for($i=0;$i<count($prolists);$i++){
  $row = $prolists[$i];
  ?>
  <tr>
    <td>
        <button type="submit" name="nselect<?php echo $row->id ?>" id="nselect<?php echo $row->id ?>" value="<?php echo $row->project_name ?>" onclick="JavaScript:makeSlection(this.form, document.getElementById('nselect<?php echo $row->id ?>').value, '<?php echo $row->tenure ?>', '<?php echo $row->address ?>', '<?php echo $row->postal_code ?>', '<?php echo $row->cat ?>', '<?php echo $row->parent_id ?>', '<?php echo $row->estate ?>', '<?php echo $row->lat ?>,<?php echo $row->lng ?>', '<?php echo $row->district ?>', '<?php echo $row->state ?>');">Select</button>
    </td>
    <td>
        <?php echo $row->project_name ?>
    </td>
  </tr>
 <?php } ?> 

</table>
</form>
</body>

即使我尝试这个:

setTimeout(function(){alert('hi');},3000); 

它也无法正常工作。

只需添加正文代码即可调用javascript。

2 个答案:

答案 0 :(得分:2)

简答

确实有效。别的东西一定是你的错。

答案很长

首先,混合使用HTML / Javascript / PHP会让任何人都难以理解你的代码试图实现的目标。

其次,如果你做出Short, Self Contained, Correct, and add an Example,你的问题就更有可能得到一个有助于你找到解决方案的答案。 最好是我们可以在线查看,它可以显示您可以创建的最简单的版本(或者在这种情况下已损坏)。

这样的版本看起来像这样:

<script>
function makeSlection(cat) {
    alert('hello im inside makeselection function');
    setTimeout(function(){ pelay(cat); },1500);
}

function pelay(cate){
    alert(cate);
}
</script>

<button onclick="JavaScript:makeSlection('foo');">Select</button>

我冒昧地从您提供给我们的代码中创建an example on JsFiddle

这引出了我的第三点:您在问题中提供给我们的代码的简化版本。两个警报都被触发。

所以我猜我们在这里没有全面了解。

答案 1 :(得分:0)

您的setTimeout位于makeSelection函数内,因此只会在makeSelection函数执行后设置超时。