【发布时间】:2015-10-08 01:24:38
【问题描述】:
我想用transition 和transform 来制作一个滑块。我使用getPropertyValue 检查当前幻灯片。它在 Chrome 中运行良好,但在 IE9 中显示错误:TypeError: Cannot read property '0' of null(我用**标记了该行)
Javascript 代码:
var slider = container.querySelector("ul");
function getCurrSliderIndex() {
var text = slider.style.getPropertyValue("transform");
console.log(text);
var pattern = /[0-9]+/;
**var match = pattern.exec(text)[0];**
var intValue = parseInt(match) / width - 1;
return intValue;
}
HTML 代码:
<ul id="primary-slider" class=" iuiSlider fix" style="width: 3794px; height: 271px; transform: translateX(-1084px);">
<li>some content</li>
<li>some content</li>
<li>some content</li>
...
</ul>
【问题讨论】:
-
你的
console.log(text);输出什么? -
嗨,@blex 它在 Chrome 中输出
translateX(-1084px),字符串类型中transform的值。但在 IE9 中什么都没有 -
this demo 是否可以在 IE9 中工作(我现在无法测试)?如果是,请尝试在您的代码中包含此代码。
-
@blex 是的!确实如此!我知道问题是 IE9 不支持
transform,它需要-ms-。但现在的问题是如何使用setProperty。我可以写slider.style.setProperty("transform", "translateX(" + (-1 - nextSliderIndex) * width + "px)");slider.style.setProperty("-ms-transform", "translateX(" + (-1 - nextSliderIndex) * width + "px)");吗? -
乍一看,它应该可以工作,但如果您在代码中使用需要大量前缀的属性,您可能需要创建一个自动执行此操作的函数。例如,创建一个
setPrefixedProperty()和一个getPrefixedProperty()函数来处理这个问题,以便拥有一个更短更清晰的主脚本。
标签: javascript cross-browser internet-explorer-9 getproperty getproperties