2016-05-15 5 views
2

は、あなたがこのように、JSを持つ要素の青を作りたかったと言う:そのオンロード内のonloadを持つ要素を簡単にターゲットにする方法はありますか?

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

上記の行は、そのコンテキスト内thisターゲットウィンドウオブジェクトとして、動作しません。あなたはIDを使うことができますが、もっと良い方法があると思います。

タイトルのように、そのオンロード内でonloadを持つ要素を簡単にターゲットにする方法はありますか?このようなソリューションは、ページにonload属性を持つ複数の要素がある場合に機能する必要があります。

+0

'onload'は' body'タグでのみ意味があります。しかし、もう少しコードを使って動作させることができます。 – dfsq

答えて

0

残念ながら、onload属性は、bodyまたはiframe要素にのみ読み込まれ、任意の要素には読み込まれません。

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

私はあなたが、あなたが要素とやりたいだろう関数に「これを」送っ示唆しています。

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

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

完璧な答えや解決策はありませんが、それは私にとって非常によく働きました。ただし、これがすべてのブラウザで動作するかどうかはわかりません。

関連する問題