Internet ExplorerのinnerHTMLは引用符なしで属性を出力します

私はIE 8を使用していて、要素Id属性を設定しようとしています。その要素を親要素に追加し、innerHTMLをチェックします。私が見る問題は、id属性に二重引用符がないことです。最初は、これは私がsetAttributeプロパティを使用していて、IE 8でバグがあるかもしれないと思ったので、jQueryを使用して属性値を設定しましたが、問題はまだ残っていました。 Heres私のコード...

            var imgId="my" + val_imgarea + "img";
            var img=document.createElement('img');
            $(img).attr("Id",imgId);
            img.setAttribute('src',name);
            img.setAttribute('style',"width:100%;height:100%");
            $(img).click(function(){clic(imgId);});

            var input=document.createElement('input');
            input.setAttribute('type','text');
            input.setAttribute('id',name);
            input.setAttribute('style',"display:none");

            var parent=document.getElementById(newArea);
            parent.appendChild(img);
            parent.appendChild(input);

            alert($("#"+newArea).html());

出力は


私は二重引用符をidカウゼで必要とし、次にこのhtmlをファイルに書き出し、いくつかの他のアプリケーションがそれを読み込み、欠落している引用の問題を引き起こします。

4

2 答え

HTMLでは、属性に引用符を含める必要はありません。IE 8以下では、空白がない限り引用符なしで属性を返します。このHTMLを解析する他のアプリケーションは、HTMLパーサーではないことは明らかです。もし意図されていれば、フォールトを修正する必要があります。

'In certain cases, authors may specify the value of an attribute without any quotation marks. The attribute value may only contain letters (a-z and A-Z), digits (0-9), hyphens (ASCII decimal 45), periods (ASCII decimal 46), underscores (ASCII decimal 95), and colons (ASCII decimal 58). We recommend using quotation marks even when it is possible to eliminate them.'

Note that, in your output, you have a closing slash / at the end of the tag. Internet Explorer doesn't put those in either (I don't think any browser does). This is an xml idiom and also not required for HTML.

4
追加された
"IE 8以下では、空白がない限り、引用符付きの属性を返します。" - 私はあなたがその反対を意味すると思います。 jsfiddle.net/ymkGZ/1
追加された 著者 pimvdb,
@pimvdb:はい...はい、私はしました。脳は今日仕事がありません。
追加された 著者 Andy E,

もし$ == JQueryの場合:

var imgId="my" + val_imgarea + "img";
$i = $('');
$i.click(function(){alert(this.id);});
$(parent).append($i);
0
追加された
Andyは正しい仲間です。IEのid属性で二重引用符を使用することはできません。私はウルの解決策を試して、それはうまくいきません。ごめんなさい!!
追加された 著者 samach,
IE9では正常に動作します
追加された 著者 Jacek Wysocki,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript