0

ブラウザは、私の xhtml で、この関数の JavaScript にエラーがあると言っています。この機能を削除すると、エラーは消えます。私にとって、このコードは構文的に完璧に見えます:

    function toAscii(text) {
        for (var i=0; i<text.length; i++) {
            var charCode = text.charCodeAt(i);
            var ascii = charCode.toString(2);
            console.log(ascii);
        }
    }       

クローム エラー:

This page contains the following errors:

error on line 19 at column 31: error parsing attribute name
Below is a rendering of the page up to the first error.

Firefox エラー:

Erro no processamento de XML: formatação incorreta 
Posição: file:///C:/Users/Carlos/Desktop/ascii%20converter.xhtml
Número da linha 19, coluna 33:
                        for (var i=0; i<text.length; i++) { 
---------------------------------------------------^

これは XHTML 全体です。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>ASCII Converter</title>
    <meta charset="UTF-8"/>

    <script type="text/javascript">
        function converter() {
            var text = document.getElementById('texto').value;
            toAscii(text);
        }

        function toAscii(text) {
            for (var i=0; i<text.length; i++) {
                var charCode = text.charCodeAt(i);
                var ascii = charCode.toString(2);
                console.log(ascii);
            }
        }       
    </script>
</head>

<body>
    Texto (Entrada):<br/>
    <input id="texto" type="text"/><br/>
    ASCII (Saída):<br/>
    <input id="ascii" type="text"/><br/>
    <input type="button" id="botao" value="Converter" onclick="converter()"/><br/>  
</body>

</html>
4

2 に答える 2

3

xhtml を使用していて<、コードに があるため、コードを cdata ブロックで囲む必要があります。

<script type="text/javascript"><![CDATA[
    function converter() {
        var text = document.getElementById('texto').value;
        toAscii(text);
    }

    function toAscii(text) {
        for (var i=0; i<text.length; i++) {
            var charCode = text.charCodeAt(i);
            var ascii = charCode.toString(2);
            console.log(ascii);
        }
    }       
]]></script>
于 2013-10-20T01:56:47.483 に答える
3

厳密に言えば、XHTML では、HTML の場合のようにヘッダーに javascript をスタックすることはできません。誰かが言ったように、CDATA セクションでラップする必要があります。補足として、投稿したコードは私のブラウザで実行されますが、おそらく寛大です。xhtml と埋め込まれた css/javascript の詳細については、このリファレンスを確認してください。

https://developer.mozilla.org/en-US/docs/Properly_Using_CSS_and_JavaScript_in_XHTML_Documents

于 2013-10-20T01:58:15.603 に答える