0

这是一个将自身连接到 MySQL 数据库的 PHP 代码。交易是,它显示存储在数据库中的名称列表。我需要做的是,当点击这些名字时,应该会显示一个他们自己的聊天框(与 Facebook 中的相同)。

这里的问题在于标有箭头的线。单击特定名称时,它应该调用 function display_chat_box,但不会。在我没有在其中添加studentid参数之前,它运行良好。我怀疑该函数chat_box_number()是作为参数发送的,但它确实对我没有帮助。之前还好好的,为什么现在不行了?我在谷歌浏览器中打开了开发者工具来检查错误,它显示

**未捕获的 ReferenceError:display_chat_box()未定义**。

我不明白为什么?其他人可以吗?无论存在什么问题,任何人都可以发布一个可行的解决方案,这样我就可以让聊天框恢复活力。

<?php
$con = mysql_connect("localhost", "****", "******");
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM online_students");
while ($row = mysql_fetch_array($result)) {
    $result2 = mysql_query("SELECT * FROM students WHERE email='$row[email]'");
    $row2 = mysql_fetch_array($result2);
    $name = $row2['firstname'] . " " . $row2['lastname'];
    $studentid = $row2['studentid'];
    echo "<li onclick='display_chat_box(chat_box_number(),\"" . $name . "\"," . $studentid . ")'>" . $name . "</li>";
}
mysql_close($con);
?>

<script src="jquery-1.9.1.min.js" type="text/javascript">
    var n = 0, chat_wid;
    function chat_box_number() {
        if (n == 2)
            n = 0;
        n++;
        return n;
    }

    function display_chat_box(j, name, studentid) {
        alert("hi");
        switch (j) {
            case 1: {

                document.getElementsByClassName("chat_box1")[0].style.display = "block";
                document.getElementById("chat_with1").innerHTML = name;
                break;
            }
            case 2: {
                document.getElementsByClassName("chat_box2")[0].style.display = "block";
                document.getElementById("chat_with2").innerHTML = name;
                break;
            }
            case 3: {
                document.getElementsByClassName("chat_box3")[0].style.display = "block";
                document.getElementById("chat_with3").innerHTML = name;
                break;
            }
        }
        chat_wid = studentid;
        update_chat();
    }
</script>
4

2 回答 2

1

未定义引用的问题是因为您错过了

<script>

标签放在后面

<script src="jquery-1.9.1.min.js" type="text/javascript">.

提示:如果您使用自己的方法选择元素,为什么要使用 jQuery lib。我给你一个简单的例子

反而

document.getElementsByClassName("chat_box1")[0].style.display="block";

利用

$(".class")[n].css("display","block");

反而

document.getElementById("chat_with3").innerHTML=name;   

利用

$("#id").html(name);
于 2013-04-16T18:39:54.563 回答
1

你需要:

<script src="jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
// your JS code
</script>

如果您要使用不显眼的 js,那么您的代码会更好 IMO,即以编程方式将点击处理程序附加到 documentready 而不是作为 html 属性,因此您li可能看起来像:

echo "<li class=\"display-chat-box-action\" data-name=\"$name\" data-studentid=\"$studentid\">$name</li>";

你的 JS 中可能有这个

$(function () {
   $('li.display-chat-box-action').on('click.chatBoxDisplay', function () {
        var $this = $(this),
            name = $this.attr('data-name'),
            studentid = $this.attr('data-studentid');

        display_chat_box(chat_box_number(), name, studentid);
   });
});
于 2013-04-16T18:32:04.940 回答