已经尝试了几个小时,但无法让它发挥作用。
如果我直接
$(.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数据有什么问题吗?我认为这将是直截了当的,但无法让它发挥作用!..
答案 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等。