Js - 为元素CSS附加一个值

时间:2011-10-14 04:07:29

标签: javascript css css3

这似乎很简单但它不起作用(未定义)。

我已将var设置为<ul>,这是<div>元素“feature_tabs_indicators”的子项。 pBoxShadowProperty函数获取当前浏览器支持的BoxShadow属性。

最后的语句只是将pBoxShadowProperty设置为0,即它覆盖了CSS set Box-Shadow属性。

有人可以在最后一句话中解释我在做错的事吗?

最佳,

var iActiveNo = 0;
var eTabInd = document.getElementById ("feature_tabs_indicators").children[0];
var pBoxShadowProperty = getSupportedCSSproperty(["boxShadow", "mozBoxShadow", "webkitBoxShadow"]);

function getSupportedCSSproperty (propertyArray)
{
    var root = document.documentElement;
    for (var i = 0; i < propertyArray.length; i++)
    {
        if (typeof root.style[propertyArray[i]] === "string")
        {
            return propertyArray[i];
        }
    }
}

iActiveNo = iActiveNo + 1;
eTabInd.children[iActiveNo - 1].style[pBoxShadowProperty] = "";

Here is the jsfiddle, press the light green button 'rght' on top right.

2 个答案:

答案 0 :(得分:2)

我想我知道你的问题是什么。你在这里使用:

iActiveNo = iActiveNo + 1;

您发布的代码中尚未定义的内容。但是你确实有:

var iActive = 0;

我认为其实应该是:

var iActiveNo = 0;

否则你的代码中会出现JS错误(无论如何都会发布)。

除此之外(也就是说,如果您打算从<li>元素中取出第一个<ul>元素并删除其box-shadow CSS属性) - 您的代码就可以了

修改

老兄,真是个烂摊子...... :)这是JSFiddle我修了一下。以下是解释。

在我们遇到真正的问题之前,应该修复JSFiddle中的一些事情。

你在那个小提琴中有错误 - 请参阅控制台。这一行:

var pBackgroundColorProperty = eStyle.backgroundColor //[pBoxShadowProperty];

不以分号结尾,然后由于(...)在下一行(我认为)而被解释为函数 - 这对于(至少对我来说)导致JS控制台出错。如果添加了分号 - 错误就消失了。

另外......有一句话:

console.log (eTabInd.children[iActiveNo-1].style.pBoxShadowProperty);

打印您的undefined,正是下面讨论过的,应该是

console.log (eTabInd.children[iActiveNo-1].style[pBoxShadowProperty]);

然后打印空字符串。

此外,打印时,您的pBoxShadowProperty变量包含boxShadow字符串。当然,这不是我熟悉的有效CSS属性。所以这个:

eTabInd.children[iActiveNo - 1].style[pBoxShadowProperty] = "";

不会做任何事情。

现在问题就在这里......

eTabInd.children[iActiveNo-1].style

开头没有'box-shadow'属性,因为您没有将其放在style元素的<li>属性中。它通过此CSS选择器序列的优点放在<li>元素上:#feature_tabs_indicators ul #ind_bt

现在,由于您需要style属性 - 您将无法获得上述CSS选择器序列适用的计算样式。因此 - 您将无法将其删除。

您可以做的是创建另一个没有box-shadow属性的类,并用它替换原来的c_ind

答案 1 :(得分:-1)

看起来你没有正确设置值,因为它应该像

eTabInd.children[iActiveNo - 1].style.pBoxShadowProperty = "";

帮助或剂量仍然返回0的剂量?