调试JavaScript和css代码:添加一个事件处理程序
Debugging JavaScript & css code: adding an event handler
你可以在这里看到代码:http://jsfiddle.net/KfwyL/我有一个div,div 内部有一个 h1。我设置了 h1,以便在悬停时它变成绿色。我想这样做,当鼠标悬停在 h1 上时,div 会得到一个框阴影。我的代码不起作用。
.HTML:
<!DOCTYPE html>
<head>
<link rel="stylesheet" type="text/css" href="../stylesheets/1.css">
<title> Max Pleaner's First Website
</title>
</head>
<body>
<div class="welcomebox">
<h1 class="welcometext">Welcome to my site.
</h1>
</div>
</body>
<<script src="../Scripts/1.js"> </script>
</html>
.css:
body {
background-image:url('../images/sharks.jpg');
}
.welcomebox {background-color:#1C0245;
-webkit-border-radius: 18px;
-moz-border-radius: 18px;
border-radius: 18px;
width: 390px;
height: 78px;
margin-left:100px;
margin-top:28px;
border-style:solid;
border-width:medium;
}
h1 {
display:inline-block;
margin-left: 12px;
height: 40px;
width: 357px;
background-color: #670715;
padding: 4px;
position: relative;
bottom: 5px;
-webkit-border-radius: 14px;
-moz-border-radius: 14px;
border-radius: 14px;
}
h1:hover {background-color: green;}
Javascript:
welcomeboxshadow = document.getElementsByClass("welcometext");
function doit()
{
var topbox = document.getElementsbyClass("welcomebox")
topbox.style.box-shadow = "-webkit-box-shadow: 0px 0px 30px rgba(114, 220, 215, 1);-moz-box-shadow: 0px 0px 30px rgba(114, 220, 215, 1);box-shadow: 0px 0px 30px rgba(114, 220, 215, 1);"
};
welcomeboxshadow.onmouseover.doit;
您要做的第一件事是发现浏览器的开发工具。在Chrome和IE上,按F12,但您可以在菜单中的某个位置找到它。开发工具控制台会报告错误等。
在这里它会告诉你getElementsByClass
在document
上不存在。该方法在末尾称为getElementsByClassName
(请注意"名称")。
一旦过去,你会发现它会抱怨NodeList
没有style
属性。 getElementsByClassName
返回一个NodeList
(节点列表,在本例中为元素)。每个都有style
,但不是列表。因此,您必须遍历列表才能使用每个元素的样式。
这是不使用jQuery的代码的工作版本,因为我认为您想知道如何在纯JS中执行此操作...
welcomeboxshadow = document.getElementsByClassName("welcometext");
welcomeboxshadow[0].addEventListener('mouseover',
function() {
var topbox = document.getElementsByClassName("welcomebox");
topbox[0].setAttribute("class","welcomebox welcomeBoxMouseOver")
}, false)
我将内联样式更改为类,但概念是相同的。
问题主要是无效的函数名称(getElementsByClass*Name*),试图设置不存在的属性(topbox.style.box-shadow
另外,您需要记住,函数返回一个集合,而不是单个元素,因此您需要使用 [0] 引用它。
请注意,我建议不要在此使用原始js方法 案例,我更喜欢使用 jQuery,因为它更干净,一旦你超越了像代码这样简单的东西,你会很高兴你使用了它
这不会使用事件侦听器,但会让您了解如何应用投影。 这使用 jQuery。http://jsfiddle.net/KfwyL/20/
我修改了您的html,因为它不希望您使用头部/身体标签。
<div class="welcomebox">
<h1 class="welcometext" onmouseover="$('.welcomebox').addClass('boxshadow');" onmouseout="$('.welcomebox').removeClass('boxshadow');">Welcome to my site.
</h1>
</div>
.css:
.welcomebox {background-color:#1C0245;
-webkit-border-radius: 18px;
-moz-border-radius: 18px;
border-radius: 18px;
width: 390px;
height: 78px;
margin-left:100px;
margin-top:28px;
border-style:solid;
border-width:medium;
}
h1 {
display:inline-block;
margin-left: 12px;
height: 40px;
width: 357px;
background-color: #670715;
padding: 4px;
position: relative;
bottom: 5px;
-webkit-border-radius: 14px;
-moz-border-radius: 14px;
border-radius: 14px;
}
h1:hover {background-color: green;}
.boxshadow
{
box-shadow: 10px 10px 5px #888888;
}
<</div>
div class="answers"> 这是一个工作版本,盒子阴影在不使用jQuery的情况下正常工作:
现场演示
Javascript:
welcomeboxshadow = document.getElementById("welcomeH1");
welcomeboxshadow.addEventListener('mouseover', function() {var topbox = document.getElementById("welcomeDiv");
topbox.className = "welcomebox shadowed";
}, false)
welcomeboxshadow.addEventListener('mouseout', function() {var topbox = document.getElementById("welcomeDiv");
topbox.className = "welcomebox";
}, false)
网页更改:
<div class="welcomebox" id="welcomeDiv">
<h1 class="welcometext" id="welcomeH1">Welcome to my site.</h1>
我也不是专家,但为什么不直接添加:.welcomebox:悬停 { box-shadow here }到你的 CSS ?
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 一个密码测试程序,如果存在空格,它会提醒用户
- 引导程序崩溃一次只能看到一个
- 仅为一个窗体运行应用程序脚本
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- React应用程序:道具在下一个事件后更新
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 编写一个程序在别人的网站上做某事,是不可能的
- 一个程序PhantomJS如何等待AngularJS$资源解析,然后再尝试测试返回的数据
- 导出javascript对象以在另一个程序中使用它
- 如何运行一个程序,直到用户给出一定的答案(字符串+ #)
- 如何从HTML运行另一个程序
- 如何用一个代码库编写一个程序来支持多个客户的定制需求?
- 制作一个javascript聊天机器人,将聊天命令转换为另一个程序中的按键
- 一个程序有多少行代码?(我知道这是一种模糊和视情况而定,但是……)
- javascript输入另一个程序要求的密码
- 我正在尝试用JavaScript构建一个程序,该程序扫描段落并返回包含特定单词的句子