2011-08-31 36 views
0

我正在使用一个名为Reveal的插件,并试图根据URL中是否存在变量(即www.mysite.com?status=new)来启动它。我已经测试了GET状态代码(工作正常,回显它),并且设置了按钮被按下时显示工作。两个工作完美无瑕。但是,目标是如果状态==新,则触发该事件。这是我的代码:PHP:调用Javascript命令

<? 
if($status == 'new'){ 
     echo '<script type="text/javascript">$(\'#myModal\').reveal(); 
</script>'; 
} 
?> 

不工作:/任何帮助?我已经尝试过很多组合,并且没有任何东西可以工作。我的代码放在靠近页面的底部(主体部分),不知道这问题的..

编辑:也试过这个(没有工作):

<? 
if($status == 'new'){ 
     echo '<script type="text/javascript"> 
     $(document).ready(function() { 
      e.preventDefault(); 
     $(\'#myModal\').reveal(); 
    }); 
</script>'; 
} 
?> 

扎克

+1

究竟不起作用? JS获得输出吗? “status”是“新”吗? –

+0

@Pekka:JS输出,我检查了源代码。但实际的插件没有开火.. – Zakman411

回答

2

上试试这个:

echo ' 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $(\'#myModal\').reveal(); 
}); 
</script>'; 

为M90已经建议,也许你执行脚本之前最好先加载了DOM。而且你可以把它放在任何地方,通常我把它放在头上,但它很好。

+0

可能是一个onload事件,在整个页面加载完成后会触发。你在测试什么浏览器? – SoLoGHoST

+0

完美工作..我做错了什么?检查我的帖子我更新 - 尝试等待DOM,但我做错了什么?虽然谢谢! – Zakman411

+0

这是你的'e'没有被定义的事实。见下面的评论。 – m90

2

请注意,这种内联JS将被浏览器立即执行,所以可能是因为你试图揭示的元素还没有准备好显示(因此没有任何反应)。通常你会通过$(document).ready()来调用你的脚本来解决这个问题。见this article jQuery的网站

+0

我试过,以及..更新后。没有工作:/ – Zakman411

+0

并确保jquery和揭示插件加载之前“调用任何jquery函数。因此,如果您的网页在最后加载了JavaScript标记(按照建议的做法),那么它将无法工作! –

+0

你的JS控制台有任何错误吗?我的第一个猜测是您发布的代码中未定义的“e”的问题。你需要防止默认行为? – m90

0

只是想在这里放一点点不同的方法:

// Example URL: 
// test.php?status=Message 

var $_GET = <?php echo json_encode($_GET); ?>; 

// alert($_GET['status']); 
// console.log($_GET);