Javascript 新元素与风格?

Javascript 新元素与风格?,javascript,css,internet-explorer,Javascript,Css,Internet Explorer,我有这个样式表: .pixel{ position: absolute; height: 10px; width: 10px; background-color: #ffcc00; font-size: 0px; } 这个javascript: function drawpixel(x,y){ el = document.createElement('div'); el.setAttribute('class','pixel');

我有这个样式表:

.pixel{
    position: absolute;
    height: 10px;
    width: 10px;
    background-color: #ffcc00;
    font-size: 0px;
}
这个javascript:

function drawpixel(x,y){
    el = document.createElement('div');
    el.setAttribute('class','pixel');
    el.style.left = x;
    el.style.top = y;
    /*  IE needs this for some reason?
    el.style.position = "absolute";
    el.style.backgroundColor = "#FFCC00";
    el.style.width = "2px";
    el.style.height = "2px";
    */
    el.style.fontSize = "0px";
    el.style.lineHeight = "0px";
    document.body.appendChild(el);
}

function mover(event){
    element = document.getElementById("coords");
    element.innerHTML = event.clientX + " " + event.clientY;
    drawpixel(event.clientX, event.clientY);
} 
这让我可以用div“画画”。但是IE需要这4行注释——不知为什么它不会读取类信息

有没有更简单的方法来“修复”IE,或者我几乎只需要这4行代码

感谢IE()中的您需要更改以下内容:

el.setAttribute('class','pixel');  


IE对
setAttribute()
的实现在IE8(在IE8标准模式下运行)之前已被严重破坏只需使用
el.className=“pixel”

只是我注意到了一些别的东西。我知道问题表明这是针对IE的,但看起来您正在事件处理程序中使用
mover(event)
。如果你正在使用Firefox和其他浏览器,你可能需要考虑对这样的移动函数进行编码:

function mover(evt){  
    evt = evt || event;                                                           
    element = document.getElementById("coords");                                 
    element.innerHTML = evt .clientX + " " + evt .clientY;                     
    drawpixel(evt.clientX, evt.clientY);                                     
} 

你打算绘制多少像素,因为这将非常非常糟糕。有趣的是,我可以在Chrome中以相当大的延迟绘制/massive/amounts,但在IE中仅绘制相对较少的像素会导致严重的延迟/崩溃。你不应该尝试使用
setAttribute()
设置类名。只需使用
el.className
即可。只要使用
className
,使用
setAttribute()
就完全可以了。我不会因为旧的IE遗留版本无法正确实现规范(end rant)而避免使用标准的ECMAScript DOM操作方法。我发现,IE的所有实现都被严重破坏了。然而,el.className可以追溯到IE 5,这应该是我必须支持的最远的版本。这些都是内部网站,现在我只是在学习web前端的东西,学习讨厌Internet Explorer的新的令人兴奋的原因。
className
回到IE 4。另外,
className
在所有主要的可编写脚本的浏览器中都能统一工作,因为IE 4并没有变得如此标准或没有标准,它是最好的使用方式。我很遗憾目前在现有项目上支持IE6,但新项目根本不支持IE6。至于IE5.5、IE5和IE4——它们超越了死气沉沉的浏览器——我拒绝支持它们。我以前试过el.className,但我想其他东西不起作用。对于事件,我读过的教程实际上就是这样使用事件的。谢谢你的更正!您的
event.clientX
event.clientY
应该是
evt.clientX
evt.clientY
function mover(evt){  
    evt = evt || event;                                                           
    element = document.getElementById("coords");                                 
    element.innerHTML = evt .clientX + " " + evt .clientY;                     
    drawpixel(evt.clientX, evt.clientY);                                     
}