Javascript 将elem.dataset与IE和JSFIDLE一起使用时出现问题
在我在Chrome上创建的这个JSFIDLE中,我发现它无法在IE上工作(我使用的是IE9)。任何与此相关的原因:Javascript 将elem.dataset与IE和JSFIDLE一起使用时出现问题,javascript,Javascript,在我在Chrome上创建的这个JSFIDLE中,我发现它无法在IE上工作(我使用的是IE9)。任何与此相关的原因: var backImage=[ "http://alm7.wikispaces.com/file/view/RedBackground.bmp/144018347/RedBackground.bmp", "http://www.time2man-up.com/wp-content/uploads/2011/07/black-background.jpg", "http://1.bp
var backImage=[
"http://alm7.wikispaces.com/file/view/RedBackground.bmp/144018347/RedBackground.bmp",
"http://www.time2man-up.com/wp-content/uploads/2011/07/black-background.jpg",
"http://1.bp.blogspot.com/--GorNQoEUxg/TfWPyckVeMI/AAAAAAAAAHk/0208KqQf3ds/s1600/yellow_background.jpg",
""
];
函数更改bgImage(whichImage){
if(document.body){
document.body.style.background=“url(\”“+backImage[whichImage]+”);
}
}
var buttons=document.querySelectorAll('.bg_swap'),
按钮
对于(变量i=0;i
数据集
在IE中似乎未定义。这可能是问题的主要根源。其他一切在IE9 64位上都可以正常工作
您可以将该状态本地存储在JS中:
for (var i = 0; i < buttons.length; i++)
register( i )
function register( i ){
button = buttons[i];
button.onclick = function() {
changeBGImage(i);
};
}
for(变量i=0;i
或者您可以进行查找
for (var i = 0; i < buttons.length; i++)
button = buttons[i];
button.onclick = function() {
changeBGImage(this.getAttribute('data-index'));
};
}
for(变量i=0;iIE<10不支持元素数据集
。您需要显式获取属性:
将来,您可能需要按F12键并查看控制台以查找错误,因为它指出了问题的原因。this.dataset.index
在IE上不起作用。请尝试使用this.getAttribute(“数据索引”)
Jquery有一个data()
方法,该方法也适用于我测试过的IE版本(IE8和IE10)
检查此处的文档:
旧版本的IE(实际上除了IE11+)无法识别数据集属性的原因是,它是在HTML5中引入的,这些版本不支持或仅部分支持它
为了获得这个属性的值,可以使用纯js
changeBGImage(this.attributes.getNamedItem("data-index").value)
或者使用getAttribute()方法更简单:
或jQuery(V1.2.3+):
我有四个超链接,其中包含一个.bg_swap类和一个升序数字索引(数据索引)。当我单击它们时,它们应该将对应于元素索引的页面背景设置为数组索引(backImage).I是Chrome,在IE9上进行了检查,但它不起作用。此.dataset在IE9中显示为未定义,因此您的onclick处理程序甚至从未调用changeBGImage()你让我开心。谢谢你的回答。+1为你。关于使用和支持的更多细节,mozilla开发者文档很好:正确。我真的不明白为什么人们需要支持过时的浏览器。IE10及以下浏览器的使用率最高为所有浏览器的6.3%,这个低使用率包括Edge和IE11,所以有max. (!)1.4%的旧IE浏览器存在。编写这种向后兼容的代码是浪费时间和金钱的,尤其是因为所有主要浏览器都是免费的,并且都有自动免费更新。最后,jQuery还是修复了它。请参阅:这是在您的客户无法/不允许安装现代浏览器的情况下发生的。例如,一家拥有过时公司的国家机构uters@StanE question创建于2011年,当时可能需要支持。@Guillermanascimento是的,你完全正确。我有时会错过约会,对不起。:-)
changeBGImage(this.getAttribute('data-index'));
changeBGImage(this.attributes.getNamedItem("data-index").value)
changeBGImage(this.getAttribute("data-index"))
$(".bg_swap").click(function(){
changeBGImage($(this).data("index"));
})