2

この (完全なコード) コードは JavaScript で記述します。

6行目にコードを書きました:

div_new = div_new+"<form name='"+name+"' onsubmit="+ return refresh(name, url, document.forms[name][name].value , '', '', 'refresh'); +" method='post' style='display:inline;'>";

このコードを追加すると、ページがうまく機能しませんでした。

onsubmit「onsubmit」を削除するとすべてがうまく機能するため、の引用符に問題があると思います。

完全なコードを (JS ではなく) 通常の HTML で記述した場合、すべてうまくいきます。

問題を解決するにはどうすればよいですか?

完全なコード:

function chat(mem_id) {
    count++;
    var div_new = "<div style='position:absolute; width:200px; bottom:0px; left:10px;'>";
        div_new = div_new+"<div style='width:100%; background-color:green;'>top "+ mem_id +" - "+count+"</div>";
        div_new = div_new+"<div style='width:100%; height:300px; background-color:pink;'>bottom // refresh_chat"+ mem_id +" ";
    var name = "send_chat_"+mem_id;
    var url = "send_chat.php";
        div_new = div_new+"<form name='"+name+"' onsubmit="+ return refresh(name, url, document.forms[name][name].value , '', '', 'refresh'); +" method='post' style='display:inline;'>";
        div_new = div_new+"<textarea name='"+name+"' autofocus=autofocus placeholder='"+name+"'></textarea><input type=submit value=' send '>";
        div_new = div_new+"</form>";
        div_new = div_new+"</div>";
        div_new = div_new+"</div>";
    bottom = div_new;
    document.getElementById('bottom').innerHTML = bottom;
}
4

2 に答える 2

2

こちらのデモをご覧ください

この行にはいくつかの間違いがあります

div_new = div_new+"<form name='"+name+"' onsubmit="+ return refresh(name, url, document.forms[name][name].value , '', '', 'refresh'); +" method='post' style='display:inline;'>";

このコードを使用

function chat(mem_id) {
    count++;
    var div_new = "<div style='position:absolute; width:200px; bottom:0px; left:10px;'>";
        div_new = div_new+"<div style='width:100%; background-color:green;'>top "+ mem_id +" - "+count+"</div>";
        div_new = div_new+"<div style='width:100%; height:300px; background-color:pink;'>bottom // refresh_chat"+ mem_id +" ";
    var name = "send_chat_"+mem_id;
    var url = "send_chat.php";
        div_new = div_new+"<form name='"+name+"' onsubmit=\"return refresh(" + name +","+ url+",document.forms[name][name].value , '', '', 'refresh');\" + method='post' style='display:inline;'>";
        div_new = div_new+"<textarea name='"+name+"' autofocus=autofocus placeholder='"+name+"'></textarea><input type=submit value=' send '>";
        div_new = div_new+"</form>";
        div_new = div_new+"</div>";
        div_new = div_new+"</div>";
    bottom = div_new;
    document.getElementById('bottom').innerHTML = bottom;
}

主な問題は、二重引用符のために戻り値が文字列の一部ではないためです。エスケープシーケンスを使用する必要があります

これが正解です

div_new = div_new+"<form name='"+name+"' onsubmit=\"return refresh(" + name +","+ url+",document.forms[name][name].value , '', '', 'refresh');\" + method='post' style='display:inline;'>";

ここにも同じエスケープシーケンスを追加しました

于 2013-08-15T18:29:22.537 に答える
0

そうです、問題は引用符です。あなたが書くときonsubmit="、最後"はあなたが始めた文字列を閉じていますdiv_new+。解決策は、引用符をエスケープすることです。JavaScript では、次の\文字を使用してこれを行うことができます\"。したがって、これは次のようになります。

div_new = div_new+"<form name='"+name+"' onsubmit=\"+ return refresh(name, url, document.forms[name][name].value , '', '', 'refresh'); +\" method='post' style='display:inline;'>";
于 2013-08-15T18:30:01.090 に答える