利用javascript中的PHP变量
我刚才在这里问了另一个问题: 我正在使用PHP+MySQL。该页面访问数据库,检索所有项数据,并列出它们。我本来打算打开一个新页面,但现在我想用javascript显示一个pop div。但是我不知道如何在新的div中使用PHP的变量。下面是代码:利用javascript中的PHP变量,php,javascript,popup,Php,Javascript,Popup,我刚才在这里问了另一个问题: 我正在使用PHP+MySQL。该页面访问数据库,检索所有项数据,并列出它们。我本来打算打开一个新页面,但现在我想用javascript显示一个pop div。但是我不知道如何在新的div中使用PHP的变量。下面是代码: <html> </head> <script type="text/javascript"> function showDiv() { document.getElementById('infoDiv').
<html>
</head>
<script type="text/javascript">
function showDiv() {
document.getElementById('infoDiv').style.visibility='visible';
}
function closeDiv() {
document.getElementById('infoDiv').style.visibility='hidden';
}
</script>
</head>
<body>
<ul>
<?php foreach ($iteminfos as $iteminfo): ?>
<li><a href="javascript:showDiv()"><?php echo($iteminfo['c1']); ?></a></li>
<?php endforeach;?>
</ul>
<div id="infoDiv" style="visibility: hidden;">
<h1><?php echo($c1) ?></h1>
<p><?php echo($c2) ?></p>
<p><a href="javascript:closeDiv()">Return</a></p>
</div>
</body>
</html>
函数showDiv(){
document.getElementById('infoDiv').style.visibility='visible';
}
函数closeDiv(){
document.getElementById('infoDiv').style.visibility='hidden';
}
“iteminfo”是来自数据库的结果,每个$iteminfo有两个值$c1和$c2。在“infoDiv”中,我想显示所选项目的详细信息。怎么做
谢谢你的帮助
还有一个问题:如果我想使用,$c1作为文本,$c2作为img scr,$c1也作为img alt;或者$c2作为a href scr,如何做到这一点?试试这个:
<?php foreach ($iteminfos as $iteminfo): ?>
<li>
<a href="javascript:showDiv(<?php echo(json_encode($iteminfo)) ?>)">
<?php echo($iteminfo['c1']); ?>
</a>
</li>
<?php endforeach;?>
基本上,您必须考虑JavaScript在PHP脚本执行结束后在浏览器中运行的时间长。因此,您必须将您的javascript可能需要的所有数据嵌入网站或在运行时获取它(在这种情况下,这会使事情变得更慢、更复杂)。
您是否希望在页面上列出一个包含多个项目的信息区,并且当您单击一个项目时,信息区会被新内容替换???或者您希望每个项目都有一个新的信息区域 我看到了与第一种方法类似的东西,因此我将处理后一种方法<?php
//do some php magic and get your results
$sql = 'SELECT title, c1, c2 FROM items';
$res = mysql_query($sql);
$html = '';
while($row = mysql_fetch_assoc($res)) {
$html .= '<li><a class="toggleMe" href="#">' . $row['title'] . '</a><ul>';
$html .= '<li>' . $row['c1'] . '</li><li>' . $row['c2'] . '</li></ul>';
$html .= '</li>'; //i like it when line lengths match up with eachother
}
?>
<html>
</head>
<script type="text/javascript">
window.onload = function(){
var els = document.getElementsByClassName("toggleMe");
for(var i = 0, l = els.length; i < l; i++) {
els[i].onclick = function() {
if(this.style.display != 'none') {
this.style.display = 'block';
} else {
this.style.display = 'none';
}
}
}
}
</script>
</head>
<body>
<ul>
<?php
echo $html;
?>
</ul>
</body>
</html>
window.onload=函数(){
var els=document.getElementsByClassName(“toggleMe”);
对于(变量i=0,l=els.length;i
ohh,以及css.toggleMe{display:none;}
@xuc:Ah,好的,你必须用\\和“with\”替换PHP中的\,然后它应该可以工作。@xuc:有时候可能会失败,我真的不推荐它。但是它不能与\”一起工作。我在原始帖子中编辑了一个进一步的问题。谢谢!
<?php
//do some php magic and get your results
$sql = 'SELECT title, c1, c2 FROM items';
$res = mysql_query($sql);
$html = '';
while($row = mysql_fetch_assoc($res)) {
$html .= '<li><a class="toggleMe" href="#">' . $row['title'] . '</a><ul>';
$html .= '<li>' . $row['c1'] . '</li><li>' . $row['c2'] . '</li></ul>';
$html .= '</li>'; //i like it when line lengths match up with eachother
}
?>
<html>
</head>
<script type="text/javascript">
window.onload = function(){
var els = document.getElementsByClassName("toggleMe");
for(var i = 0, l = els.length; i < l; i++) {
els[i].onclick = function() {
if(this.style.display != 'none') {
this.style.display = 'block';
} else {
this.style.display = 'none';
}
}
}
}
</script>
</head>
<body>
<ul>
<?php
echo $html;
?>
</ul>
</body>
</html>