0

私の JavaScript コードには、次の行があります。

document.write("</form><button style='margin-top:100px; width:150px; position:absolute; left:50%; margin-left:-75px' type='button' onclick='Proceed('test')'>Se resultat</button>");

スタイルとタイプのプロパティは正常に機能しますが、パラメーターを JavaScript 関数の Proceed に渡そうとすると機能しません。私も試してみました(\'test\')

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

編集:完全なhtmlスクリプト

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Title here.</title>
    <script>
        function Proceed(var test)
        {
            alert(test);
        }
    </script>
</head>
<body style="font-family:Palatino">
    <img src="logo.png"/>
    <hr/>
    <h1 style="text-align:center">Description here.</h1>        

    <script>

        if (window.XMLHttpRequest)
        {
            request=new XMLHttpRequest();
        }
        else
        {
            request=new ActiveXObject("Microsoft.XMLHTTP");
        }
        request.open("GET","data.xml",false);
        var XMLdocument;
        request.onreadystatechange=function()
        {
            if (request.readyState==4)
            {
                XMLdocument = request.responseXML;
            }
        };
        request.send();
        var questions = XMLdocument.getElementsByTagName("question");
        for(i = 0; i < questions.length; i++)
        {
            var x = questions[i];
            var questionvalue = x.getElementsByTagName("questionvalue");
            document.write("<p style='margin-top:50px; font-size:20px; font-weight:bold; text-align:center'>" + questionvalue[0].childNodes[0].nodeValue + "</p>");
            var answers = XMLdocument.getElementsByTagName("answer");
            document.write("<form>");
            for(n = 0; n < answers.length; n++)
            {
                y = answers[n];
                var answervalue = y.getElementsByTagName("answervalue");
                document.write("<input style='margin-left:43%; margin-right:20px;' type='radio' name='" + questionvalue[0].childNodes[0].nodeValue + "' value='" + answervalue[0].childNodes[0].nodeValue + "'>" + answervalue[0].childNodes[0].nodeValue + "<br/>");
            }
            document.write("</form><button style='margin-top:100px; width:150px; position:absolute; left:50%; margin-left:-75px' type='button' onclick='Proceed(\"test\")'>Se resultat</button>");
        }
    </script>
</body>
    </html>
4

3 に答える 3

2

無効な HTML であるため、機能しません:

document.write("</form><button ... onclick='Proceed('test')'>...</button>");

次のように記述されます。

</form><button ... onclick='Proceed('test')'>...</button>

DOM に書き込まれると、 の引用スタイルによってonclick終了位置が決まり、基本的に の値になりonclick Proceed(ます。引用文字を変更する必要があります。

document.write("</form><button ... onclick=\"Proceed('test')\">...</button>");

また:

document.write("</form><button ... onclick='Proceed(\"test\")'>...</button>");

編集:簡単な例については、このplunkrを参照してください

于 2013-08-07T12:30:30.770 に答える
1

一重引用符をエスケープされた二重引用符に変更できます。

onclick='Proceed(\"test\")'
于 2013-08-07T12:30:26.643 に答える