javascript - addRule/insertRule 在本地不工作

标签 javascript css google-chrome

我正在构建一个 javascript 图像 slider ,并注意到在 chrome 中本地拉取 index.html 文件时出现问题。这是我的代码

(function(){ //slider container

    var slider = document.getElementById('slider');
    var figure = slider.childNodes[1];
    var slidyImgs = figure.getElementsByTagName('IMG');
    var figureWidth = slidyImgs.length * 100;
    var slidyImgsWidth = 100 / slidyImgs.length;

    css('#slider figure{ width: '+figureWidth+"%; }"); 
    css('#slider figure img{ width: '+slidyImgsWidth+"%; }");

    var xPos = 100;
    setInterval(function(){
        figure.style.marginLeft = "-" + xPos + "%";
        xPos = (xPos === (figureWidth - 100)) ? 0 : xPos + 100;
    },7000);

})()

function css(newrule) { //adds a new style to stylesheet
    var styles = document.styleSheets[1]
    try { 
        styles.insertRule(newrule, styles.cssRules.length);
    } catch(err) {
        try { styles.addRule(newrule); }catch(err){} //IE
    };
};

当我在本地打开文件时,似乎没有应用 insertRule。但是当我在我的服务器上打开它时,insertRule 显示正常。任何人都知道是什么原因造成的

您可以在我的服务器上查看网站/源代码:http://magnetwd.com/kellin/

最佳答案

我会做类似的事情(如果 jQuery 不是一个选项)

function addStylesBySelector(sel, newStyles) {
    var els = document.querySelectorAll(sel)
    for (var i = 0; i < els.length; i++) {
        for (var k in newStyles) {
            els[i].style[k] = newStyles[k];
        }
    }
}

用法:

addStylesBySelector('#slider figure', {"width": figureWidth + "%"})

那么显然您可以为第二个参数添加的不仅仅是 width

关于javascript - addRule/insertRule 在本地不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27629363/

相关文章:

javascript - WebGL - 是否可以将 gl 传递给 img.onload 函数?

javascript - 多次点击jquery后更改多个按钮的颜色

css - 滚动并单击后导航在 Chrome 中消失

javascript - javascript中的点击事件

javascript - 以下代码在 IE 中不起作用,但在 opera 和 mozilla 中有效

css - 如何包装这样的div?

internet-explorer-8 - 当在我的页面中使用时,JsDatePick 的数据选择器在 IE8 中的外观全部损坏

html - 2 次要的跨浏览器 CSS 问题。背景图片未在 Google Chrome 中显示?

javascript - 在我加载的每个页面上的 ChromeAPI.js 中出现未捕获的类型错误

javascript - 第一次执行代码时将永久值存储在变量中,JavaScript