我正在使用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写入一个文件,然后其他一些应用程序读取它并导致问题忽略了引用。
答案 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);