0

これは、それ自体を MySQL データベースに接続する PHP コードです。取り引きは、データベースに保存されている名前のリストを表示することです。私がしなければならないことは、名前をクリックすると、名前が独自のチャット ボックスを表示することです (Facebook と同じ)。

ここでの問題は、矢印でマークされた行にあります。特定の名前をクリックすると、関数が呼び出されるはずですが、呼び出されdisplay_chat_boxません。studentid引数を追加しない限り、うまくいきました。関数chat_box_number()が引数として送信されていると思われますが、実際には役に立ちません。以前は問題なく機能していたのに、なぜ今は機能しないのですか? エラーを確認するためにGoogle Chromeで開発者ツールを開いたところ、表示されました

**Uncaught 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 src="jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
// your JS code
</script>

目立たないjsを使用する場合、つまりhtml属性としてではなくdocumentreadyにプログラムでクリックハンドラーをアタッチする場合、コーディングはIMOの方がはるかに優れているため、次のようになります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 に答える