2013-07-25 136 views
0

我有以下脚本,它尝试更改div的颜色,单击时使用包装的id。我已尝试过以下内容的变体,但无法看到问题。点击事件不会触发该功能。 我曾尝试将background-color更改为backgroundColor,但这没有什么区别。我知道我使用一个全局变量在这里,请忽略部分:onClick事件不触发函数

var wrapper; 

function wrapperColorToCoral() { 
    wrapper.setAttribute('style', 'background-color:LightCoral;'); 
} 

function wrapperColorToGreen() { 
    wrapper.setAttribute('style', 'background-color:LightGreen;'); 
} 

function colorChange() { 
    //if (wrapper.getAttribute('style', 'background-color:LightCoral;') === true) { 
    if (wrapper.style != 'background-color:LightGreen;') { 
    wrapperColorToGreen(); 
    } 
    else { 
    wrapperColorToCoral(); 
    } 
} 
// INIT FUNCTION 
function init() { 
    wrapper = document.getElementById('wrapper'); 
    wrapper.onClick = colorChange(); 
} 

window.onload = init; 

谢谢您的帮助

编辑(工作 - 感谢昆汀):

var wrapper 

function wrapperColorToCoral() { 
    wrapper.style.backgroundColor="LightCoral"; 
} 

function wrapperColorToGreen() { 
    wrapper.style.backgroundColor="LightGreen"; 
} 

function colorChange() { 
    if (wrapper.style.backgroundColor==="LightCoral") { 
    wrapperColorToGreen(); 
    } 
    else { 
    wrapperColorToCoral(); 
    } 
} 

function init() { 
wrapper = document.getElementById('wrapper'); 
wrapper.addEventListener("click", colorChange, false); 
} 
window.onload = init; 
+1

把你的init改成:'wrapper.onclick = colorChange;' – RobH

回答

6
  1. 的JavaScript区分大小写。该物业是onclick(但你可能应该使用addEventListener反正)。
  2. ()放在函数名的末尾会调用函数。你想把它分配给一个属性。删除括号。
+0

非常感谢! - 所以你建议我做更多的事情:'wrapper.addEventListener(“click”,colorChange,false);'? – gcubed

+0

是的,那样更好。 –

+0

@Quentin - 你能告诉我为什么只听一次,但如果我再次点击,它不会再运行该功能? – gcubed