0

これについていくつかのトピックを読みましたが、まだわかりません。私が必要としているのは、「this」ステートメントが関数を呼び出しているオブジェクトを参照できるようにすることですが、ウィンドウを参照しているように見えます..

私の関数は次のようになります。

function  bckClr(clr){
var elmnt=this;
elmnt.style.background-color=clr;
}

そして私はそれを次のように呼びます:

< div > onmouseover="bckClr(#ff0000)">Lorim ipsum dolor sit amet.. < /div >
4

3 に答える 3

5

このようにしてください:

<div onmouseover="bckClr(this, '#ff0000')">Lorim ipsum dolor sit amet.. </div>

その後:

function  bckClr(elmnt, clr){
   elmnt.style.backgroundColor=clr;
}

更新:
Pranav Kapoor によって指摘された、sytle プロパティの CamelCase を使用して更新されました。

于 2012-11-01T19:08:26.570 に答える
2

JavaScriptをマークアップから分離します。

<div id="thediv">Lorim ipsum dolor sit amet.. </div>

と:

var bckClr = function (element, color) {
    // notice the property is camel cased, not hyphenated
    element.style.backgroundColor = color;
};

document.getElementById('thediv').onmouseover = function () {
    bckClr(this, '#ff0000');
};

http://jsfiddle.net/L9DRF/3/

于 2012-11-01T19:16:37.867 に答える
1

インライン ハンドラーの代わりにイベント リスナーを使用します。

HTML:

<div id="mydiv">Lorim ipsum dolor sit amet.. </div>

JS:

function  bckClr(elmnt, clr){
   elmnt.style.backgroundColor=clr;
}
document.getElementById("mydiv").addEventListener("mouseover",function(){bckClr(this, '#ff0000');})
于 2012-11-01T19:14:01.270 に答える