利用javascript中的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').

我刚才在这里问了另一个问题: 我正在使用PHP+MySQL。该页面访问数据库,检索所有项数据,并列出它们。我本来打算打开一个新页面,但现在我想用javascript显示一个pop div。但是我不知道如何在新的div中使用PHP的变量。下面是代码:

<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>