好吧,如果你看下面的代码,我试图让它更“灵活”,将JavaScript代码移动到自己的文件中,而不是将其保存在php文件中。
下面的代码不再适用了,因为我无法将$yadayada['id']
转移到JS文件,好吧我不知道怎么做,这就是我的问题所在。
我如何使用下面的代码,或者它的一些变体?
当你按下一个特定的图像(按钮)时,会发生一个模态,为while语句中的特定帖子打开一个模态。
我已经跳过了帖子部分,因为这不是问题所在,它正在为正确的帖子打开一个模态窗口。
提前致谢!
$yadaya = mysql_query("blablabal")
while($yadayada = mysql_fetch_assoc($yadaya)
{
<div id="kommentera<?=$yadayada['id']?>" class="settingsBox" style="display: none; width:500px; font-size: 14px;">
<textarea id="text<?=$yadayada['id']?>" class="textarea" style="width: 493px; height:80px;"></textarea><br />
<span class="buttons" style="float:left;">
<button id="kommenteraFilm" id1="<?=$yadayada['id']?>" uid1="<?=$yadayada['guid']?>" uid2="<?=$acc_info['id']?>" class="positive" type="submit" name="kommentera"><img src="<?=$static?>/img/bullet_go.png" alt="" />Kommentera</button>
</span>
<?php
?>
</div>
echo '
<div id="se-kommentera'.$yadayada['id'].'" class="testing" style="float:right; margin-top:-2px; cursor:pointer;">
<img src="'.$static.'/img/icon_kommentera.png" height="15px" width="15px" alt="" title="Kommentera" />
</div>'
;
}
页脚:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="<?=$static?>/js/mylibs/dependency.js"></script
dependency.js:
$(function() {
$('#se-kommentera<?=$yadayada['id']?>').click(function (e) {
$('#kommentera<?=$yadayada['id']?>').modal();
return false;
});
});
更新
要回答一些回复,我想您忘记了我无法在语句本身之外访问while语句,因此将js文件设置为php文件是没用的。
JS文件必须位于页脚中的jQuery库文件下面。
答案 0 :(得分:2)
直接回答您的问题:您可以通过PHP代码动态“生成”Javascript。例如:
<!-- note that the source is .php so that the server processes it as such -->
<script type="text/javascript" src="dependency.php"></script
而dependency.php
看起来像是:
<?php
// tell the browser how to interpret what we 'll be sending
header('Content-Type: text/javascript');
// get reference to any variables we need
$yadayada = /* ... */
?>
$(function() {
$('#se-kommentera<?=$yadayada['id']?>').click(function (e) {
$('#kommentera<?=$yadayada['id']?>').modal();
return false;
});
});
所有这些与使用PHP输出HTML时所做的完全相同,只是现在您正在输出Javascript。但问题是你正在做同样的工作(到$yadayada
需要什么),一次为你的HTML,一次为你的JS。
只需更改标记,以便在编写JS时 无需知道$yadayada
内的任何内容;这样,代码可以保持静态。例如:
HTML:
<div class="se-kommentera testing">
<img src="..." height="15px" width="15px" alt="" title="Kommentera" />
<div class="settingsBox kommentera">
</div>
</div>
JS:
$(function() {
$('.se-kommentera').click(function (e) {
$(this).find(".kommentera").modal();
return false;
});
});
我在这里做的是提供一种方法来找到不具有绝对标识符(.kommentera
)的适当id
div,但是以{em> relative 的方式找到{{} 1}}被点击了。
为方便起见,我选择将一个div放在另一个div中并使用.se-kommentera
来保持它;但这不具约束力,你可以在这里做出几十种不同的选择。例如,您可以像以前一样给两个div .find
,然后执行以下操作:
id
答案 1 :(得分:0)
一种简单的方法是为JavaScript文件提供.php
扩展名,而不是常规.js
。这样,在将JavaScript发送到客户端之前,PHP代码将在服务器上执行。当您在脚本标记上指定type="text/javascript"
时,浏览器将不介意JS文件上的.php
扩展名。
答案 2 :(得分:0)
您是否尝试在js文件中回显$ yadayada?
答案 3 :(得分:0)
如果你希望你的javascript文件能够输出PHP变量,我能想到的最好的方法是在你的htaccess文件中添加一个mimetype。
以下内容适用于Apache ...
AddType application/x-httpd-php .js