3

我已经看了一遍,无法完全理解我做错了什么。

我只想在单击子元素时不触发父元素(更改不透明度)。

简单的答案表示赞赏!

谢谢

HTML
<div id="not-clicker">
    <div id="clicker" onClick="clickBox();">
    </div>
</div>

JAVASCRIPT
function clickBox(event) {
    document.getElementById('clicker').style.backgroundColor = 'green';
    event.stopPropagation();
};

JSfiddle(不能正常工作)

4

2 回答 2

1

这不会捕获事件。您将需要一个事件处理程序来执行此操作。因此,您需要重构以避免使用内联 javascript

html更改

<div id="clicker"></div>

js改变

document.getElementById('clicker').onclick = function(event){
 document.getElementById('clicker').style.backgroundColor = 'green';
 //this.style.backgroundColor = 'green';note you can also use this to reference the element now
 event.stopPropagation();
};

编辑

更多信息

请注意,由于不再内联,因此脚本必须在元素位于 DOM 之后运行。为此,您需要将脚本放在页面下方,或等待窗口的加载事件触发。这是一个例子

window.onload = function(){//this callback executes when the window is fully loaded
 //now we can guarantee all DOM elements are present
 document.getElementById('clicker').onclick = function(event){
  this.style.backgroundColor = 'green';
  event.stopPropagation();
 };
};
于 2013-11-11T16:15:17.783 回答
0

在你的 jsfiddle 上,clickBox在 onLoad.. 在左侧使用“No Wrap in head”

你有getElementByTag!使用getElementById.

于 2013-11-11T16:19:43.653 回答