这行不通,什么也没发生。我如何使其工作,我在做什么错?
function animate() {
var div = document.getElementById('demo');
div.style.left = "200px";
div.style.color = "red";
}
#demo {
position: absolute;
}
<p id='demo' onclick="animate()">lolol</p>
问题在于,由于您使用事件处理程序的content属性,因此您的全局函数…
window.animate
被…遮盖
Element.prototype.animate
…这是最近在Web Animations中引入的:
5.21Element
接口扩展
由于DOM元素可能是动画的目标,因此Element 接口[
DOM4 ]扩展如下:
Element implements Animatable;
这允许以下类型的用法。
elem.animate({ color: 'red' }, 2000);
在获取事件处理程序的当前值的[步骤10]中说明了此行为:
词汇环境范围
否则, H 是Window
对象的事件处理程序:让 Scope 为 全局环境 。
如果 表单所有者 不为null,则使 Scope 为NewObjectEnvironment( form owner ,
Scope )的结果。
如果 element 不为null,则让 Scope 为NewObjectEnvironment( element,Scope
)的结果。
注意: _NewObjectEnvironment()是在ECMAScript版本5第10.2.2.3节中定义的NewObjectEnvironment(O,E)
这意味着目标元素的范围会覆盖全局范围。
因此,您可以
重命名您的功能
function animate__() {
var div = document.getElementById(‘demo’);
div.style.left = “200px”;
div.style.color = “red”;
}
#demo {
position: absolute;
}
<p id='demo' onclick="animate__()">Click me</p>
使用window.animate
(假设window
尚未被遮盖):
<p id='demo' onclick="window.animate()">Click me</p>
function animate() {
var div = document.getElementById(‘demo’);
div.style.left = “200px”;
div.style.color = “red”;
}
#demo {
position: absolute;
}
<p id='demo' onclick="window.animate()">Click me</p>
使用事件处理程序IDL属性代替内容属性one:
document.getElementById('demo').onclick = animate;
function animate() {
var div = document.getElementById(‘demo’);
div.style.left = “200px”;
div.style.color = “red”;
}
document.getElementById(‘demo’).onclick = animate;
#demo {
position: absolute;
}
<p id='demo'>Click me</p>
使用事件侦听器代替事件处理程序:
document.getElementById('demo').addEventListener('click', animate);
function animate() {
var div = document.getElementById(‘demo’);
div.style.left = “200px”;
div.style.color = “red”;
}
document.getElementById(‘demo’).addEventListener(‘click’, animate);
#demo {
position: absolute;
}
<p id='demo'>Click me</p>
我有一些 在量角器中,我们搜索并找到元素,检查文本是否符合我们的期望,然后对该元素调用。测试在Chrome中运行良好,但在IE中就好像没有点击发生一样。破坏了测试。 IE 11是否支持点击
问题内容: 以下是我的JavaScript(mootools)代码: 在除IE之外的所有浏览器中,这都可以正常工作。但是在IE中,这会导致错误。我有IE8,因此在使用其JavaScript调试器时,我发现该对象没有导致错误的方法,因此正在提交表单。在Firefox(我使用Firebug发现)的情况下支持该方法。 有帮助吗? 问题答案: 在IE中,您可以使用 达到相同的结果。 为了不出错,您可以测试
问题内容: 我注意到less.js在firefox中工作,但在Chrome中不工作,或者是因为我出错了吗? 即使我尝试在Chrome中仍然无法使用,我在某个地方犯了错误吗? 问题答案: 通过您提供的链接: 如果您使用的是Chrome,Less.js浏览器脚本当前将无法使用,并且由于已知的Chrome问题,网页的路径以“file:///”开头。
问题内容: 由于某种原因,似乎响应JS无法正常工作。我正在IE 8中使用媒体查询来更改各种大小的监视器的背景图像。在IE 8中,没有背景,只有纯色。 代码如下: 媒体查询如下所示: 上面的代码在IE 8中无法工作是有原因的吗?我还应该尝试使用另一个JS来使IE 8 Media Queries工作吗? 注意:看来html5-shiv确实有效。我正在实时Web服务器上进行测试。 问题答案: 同样的问题
问题内容: 我有以下功能 但是 在ie7中不起作用,那我该怎么办!我想将光标放在输入中! 谢谢 更新 很好的解决方案,谢谢,但是现在在opera中不起作用:( 问题答案: 对于IE,您需要使用settimeout函数,因为它很懒,例如: 对于opera,这可能会有所帮助:如何在opera文本框上的所需索引中设置焦点
问题内容: 我试图在我的一个JavaScript程序中应用一个字符串。在Mozilla下它可以正常工作,但是当我在IE8中尝试时会显示错误。有人知道这是怎么回事吗?无论如何,我可以使其在IE中工作吗? 码: 错误显示: 问题答案: 添加以下代码以向字符串添加修剪功能。