0

この JavaScript 関数に問題がありますが、実際に何が起こっているのかわかりません。話を短くするために。いくつかのオプション(プロジェクト名)を使用して、selectを使用してドロップダウンリストを作成しました。これらのオプションはデータベースから取得されます。各プロジェクトには名前 (ドロップダウン リストに表示) とコンテンツがあります。コンテンツはテキストエリアにロードされるはずです。今、これは私が作って動作する部分です。

ただし、問題は、プロジェクトのコンテンツ (テキストエリア) で何かを変更すると、ドロップダウン リストが機能しなくなることです。それをクリックして別のプロジェクトに変更することはできますが、そのプロジェクトはロードされません。

ここに私のjavascriptがあります

<script>
        function getContent()  {
            var mail = document.getElementById("email").value;
            var project = document.getElementById("projects").value;
            var xhr;
            if (window.XMLHttpRequest) { // Mozilla, Safari, ...
                xhr = new XMLHttpRequest();
            } else if (window.ActiveXObject) { // IE 8 and older
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            var data = "project=" + project+  "&email=" + mail;
            xhr.open("POST", "/includes/projects.php", true);
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xhr.send(data);
            xhr.onreadystatechange = display_data;
            function display_data() {
                if (xhr.readyState == 4) {
                    if (xhr.status == 200) {
                        //alert(xhr.responseText);
                        document.getElementById("projectcontent").innerHTML = xhr.responseText;
                    } else {
                        alert(xhr.status);
                    }
                }
            }
        }
    </script>

そして、これが私のドロップダウンとテキストエリアです。

<form>
<select id="projects" onchange="getContent()"><option>Select project</option>
        <?php
        foreach($projects as $project)
        {?>
            <option value="<?php echo $project['id'];?>"><?php echo $project['name']; ?></option>
        <?php
        }
        ?>
 </select><input type="hidden" id="email" value="<?php echo $_SESSION['user']; ?>" /></form><br />
<textarea id="projectcontent"></textarea>

ここで何がうまくいかないのですか?最初は getContent 関数が機能するのに、テキストエリアの内容を変更すると機能しなくなるのはなぜですか?

4

2 に答える 2

3

innerHTML ではなく、テキスト領域の value プロパティを設定する必要があります

document.getElementById("projectcontent").value = xhr.responseText;
于 2013-05-27T11:49:10.963 に答える