Internet Explorer innerHTML输出没有引号的属性

时间:2011-10-28 10:11:42

标签: javascript jquery internet-explorer

我正在使用IE 8并尝试设置元素Id属性。然后我将该元素附加到父元素并检查它的innerHTML。我看到的问题是id属性缺少双引号。起初我认为这可能是因为我使用的是setAttribute属性,并且可能在IE 8中有问题,所以我使用jQuery来设置属性值,但问题仍然存在。继承我的代码......

            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());

输出

<IMG id=my21img style="width:100%;height:100%" src="a/img.jpg" />

我需要带有id的双引号,然后我将这个html写入一个文件,然后其他一些应用程序读取它并导致问题忽略了引用。

2 个答案:

答案 0 :(得分:4)

HTML不要求用引号包装属性,IE 8和更低的返回属性没有引号,除非它们中有空格。解析此HTML的其他应用程序显然不是HTML解析器,如果它们是预期的,则需要修复它们。

  

'在某些情况下,作者可以指定没有任何引号的属性值。属性值可能只包含字母(a-z和A-Z),数字(0-9),连字符(ASCII十进制45),句点(ASCII十进制46),下划线(ASCII十进制95)和冒号(ASCII十进制58)。我们建议使用引号,即使可以消除它们。'

     

请注意,在您的输出中,/标记的末尾有一个结束斜杠<IMG。 Internet Explorer也没有将它们放入其中(我认为任何浏览器都没有)。这是一个XML习语,也不是HTML所必需的。

答案 1 :(得分:0)

如果$ == JQuery:

var imgId="my" + val_imgarea + "img";
$i = $('<img src="" style="width:100%;height:100%" id="'+imgId+'" />');
$i.click(function(){alert(this.id);});
$(parent).append($i);