我不确定我在这里做错了什么:
的index.html
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "XHTML1-s.dtd" >
<html xmlns="http://www.w3.org/TR/1999/REC-html-in-xml" xml:lang="en" lang="en" >
<head>
<script type="text/javascript" src="scripts/eventInit.js"></script>
</head>
<body>
<p id="javascriptWarning">This page will not work with JavaScript disabled.</p>
</body>
</html>
eventInit.js
window.onload = function () {
alert("check"); // works
var jsWarning = document.getElementById("javascriptWarning");
jsWarning.onclick = function () {
alert("hi"); // works
};
jsWarning.onload = function () {
alert("loaded"); // fails
};
}
然而,没有任何反应。我究竟做错了什么?我尝试过其他活动,例如onmouseover
和onload
。
我在Visual Studio中这样做,并且intellisense没有为我提供设置任何事件处理程序的选项。那是因为我做错了吗?
我已经确认JS正在进行我的设置;只需将alert("hi")
放入脚本中并包含它就可以了。
重要的是要注意我在JScript中这样做,因为我使用的是Visual Studio 2010,所以事件处理可能不同吗?
已更新以从ID名称中删除“ - ”,但它仍无效。
更新添加了window.onload
块。现在onclick
有效,但onload
没有。
答案 0 :(得分:1)
也许你忘了将代码块放在
中window.onload = function() {
// btn click code here
}
答案 1 :(得分:1)
<p>
标记上触发“onload”事件。如果你在整个窗口的“onload”处理程序中完成工作,那么你无论如何都不需要。答案 2 :(得分:1)
脚本在所需元素存在之前执行。另外,我不认为,p
有一个onload
- 事件。 Windows,框架和图像,是的,但段落?
如果您使用库,则应使用<body onload="init();">
或window.onload=function(){ … }
或库函数。例如:
<强>的index.html 强>
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "XHTML1-s.dtd" >
<html xmlns="http://www.w3.org/TR/1999/REC-html-in-xml" xml:lang="en" lang="en" >
<head>
<script type="text/javascript" src="scripts/eventInit.js"></script>
</head>
<body>
<p id="javascriptWarning">This page will not work with JavaScript disabled.</p>
</body>
</html>
<强>脚本/ eventInit.js 强>
window.onload=function(){
alert('JS is working!');}
编辑:好的,我非常确定,p
不使用onload
事件处理程序。毫无疑问,你不需要它。如果要在段落完成后执行JS代码,请执行以下操作:
<p>
<!-- stuff -->
</p>
<script type="text/javascript">
/* stuff */
</script>
答案 3 :(得分:1)
而不是:
jsWarning.onload = function () {
alert("loaded"); // fails
};
试试这个
if(jsWarning) alert("loaded");
我认为上面提到过检查元素是否存在。在这个阶段,元素应该存在,但检查它没有任何危害。
答案 4 :(得分:1)
您正尝试在段落上设置加载事件。只有加载外部数据的对象(窗口,框架,iframe,img,脚本等)才会出现加载事件。
有些JS库实现了一个可用的事件(例如YUI) - 但你知道段落是可用的,因为你在它上面设置了一个事件,而你却不能如果它不可用那就这样做。
答案 5 :(得分:0)
我认为您必须确保您的JavaScript具有约束力。
你的段落元素之前或之后的javascript,出于某种原因我的大脑是针对那个。
我会考虑使用类似jQuery的东西,它会有所帮助。
使用jQuery你的代码将是(当然包含相关的jQuery文件):
$(document).ready(function()
{
$("#javascript-warning").click(function(){
alert("HELLO");
});
});
答案 6 :(得分:-1)
与JavaScript一起使用时,我认为连字符在类名中无效。请尝试使用下划线。
答案 7 :(得分:-1)
onload是一个窗口事件。