DOM元素上的.css()未激活

时间:2014-02-27 00:11:00

标签: javascript jquery css

已经尝试了几个小时,但无法让它发挥作用。

如果我直接

$(.button).click(function(event){
    var graham = window.document.childNodes[1].childNodes[2].childNodes[1].childNodes[9];
    $(graham).css('color', 'red');
)};

但是我不是直接输入DOM节点,而是将其循环通过如下循环:

$(.button).click(function(event) {
  js = (js.slice(0, -1)).split(",");
  for(x = 0; x< js.length; x++) {
      js[x] = "childNodes[" + js[x] + "]";
  }
  js = "window.document." + js.join(".");
    $(js).css('color', 'red');
     

)};

没有任何事情发生在onclick上。将'window.document'用作字符串并将其附加到childNodes数据有什么问题吗?我认为这将是直截了当的,但无法让它发挥作用!..

2 个答案:

答案 0 :(得分:1)

问题是jQuery将js视为字符串而不是对象:

这会将Stackoverflow网站<body>更改为绿色:

$(window.document.childNodes[1].childNodes[2]).css('background', 'green');

这不是:

$('window.document.childNodes[1].childNodes[2]').css('background', 'green');

但是这样做:

$(eval('window.document.childNodes[1].childNodes[2]')).css('background', 'green');

在你的控制台中试试。

你需要这样做:

$(eval(js)).css('color', 'red');

答案 1 :(得分:0)

如果您已经在使用jQuery,则无需通过childNodes搜索具有本机NodeList对象的节点。只需依赖jQuery选择器。

如果未使用jQuery,则可以依赖本机DOM方法,例如querySelector,getElementById,getElementsByTagName,getElementsByClassName等。