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 指出,使用 CamelCase 对 sytle 属性进行了更新。

于 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 回答