2016-05-15 70 views
2

說你想使與JS元素的藍色,像這樣:任何簡單的方法來在onload中使用onload來定位元素?

<p onload="this.style.color = 'blue'">Boy, I sure do wish I was blue</p> 

上面一行不起作用,因爲this目標,在這方面的窗口對象。你可以使用ID,但我認爲有更好的方法。

所以,就像標題所說,有沒有簡單的方法可以在onload中使用onload來定位元素?請注意,如果頁面中存在多個具有onload屬性的元素,則此解決方案必須工作。

+0

'onload'只對'body'標籤有意義。但是你可以用更多的代碼使它工作。 – dfsq

回答

0

不幸的是onload屬性只會加載到bodyiframe元素上,而不是在任意元素上。

1

你必須用JavaScript來做到這一點。

您可能想要排除windowiframe元素,但這應該讓您開始。

// Get the list of elements with an `onload` attribute 
var list = document.querySelectorAll("[onload]"); 

// Loop through those elements 
for(var i = 0; i < list.length; i++) { 
    var el = list[i]; 

    // Get the value of `onload` 
    var v = el.getAttribute("onload"); 
    console.log(v); 

    // Once you have `v` you need to call it... with something like: 
    var func = new Function(v); 
    func.call(v); // This should set `this` properly. 
} 
0

我建議你把「this」發送給一個函數,然後這個函數將做你想要的元素。

function change(e){ e.style.color = 'blue'; } 

<p onload="change(this);">Boy, I sure do wish I was blue</p> 

雖然不是完美的答案或解決方案,但它對我來說效果很好。請注意,我不知道這是否適用於每個瀏覽器。