用这个改变颜色

时间:2014-04-02 18:21:02

标签: javascript

为什么这不起作用?

sup.farba=function() {       
     this.style.color="blue";
};

function ahoj() {
     sup=document.getElementById("aaa");
     sup.farba();
}

3 个答案:

答案 0 :(得分:2)

sup.farba中定义的函数不知道“this”是什么。

尝试:

function ahoj() {
    sup = document.getElementById("aaa");
    sup.style.color = "blue";
}

比不需要时从函数调用另一个函数容易得多。

答案 1 :(得分:1)

this不是您的想法,您不能只使用点表示法,并期望这些函数可以链接到某个随机变量。

对于此示例,使用bindapplycall看起来会更容易

farba = function() {       
     this.style.color="blue";
};

function ahoj() {
     var sup = document.getElementById("aaa");
     farba.apply(sup, []);
}

答案 2 :(得分:1)

简单的答案是:因为这不是它的工作原理。

sup = document.getElementById('aaa');

这会覆盖sup ...因为变量名称相同,所以无法访问sup上的函数!

试试这个:

function farba(newcol) {
    this.style.color = newcol;
}
function ahoj() {
    var sup = document.getElementById('aaa');
    farba.call(sup,'blue');
}