我的javascript和html肯定是连接在一起的,因为我运行了console.logs进行测试。
我的html中有一个onclick,它应该运行menu()。 menu()的意思是删除我的'lanterns'元素,它是一个图像。 然而,什么也没发生。 也没有错误可以帮助调试。 我还尝试使用父项#changeTotext的id,但没有得到任何响应。 我一定是做了一些相当基本的错误。
function menu(){
var el = document.getElementById("lanterns");
el.remove();
};
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The Ludong Chinese Restaurant</title>
<meta name="description" content="The Ludong Chinese Restaurant">
<meta name="author" content="SitePoint">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css2?family=East+Sea+Dokdo&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
</head>
<body>
<nav class="navbar navbar-expand-md bg-dark navbar-dark" id="top-bar">
<a class="navbar-brand" href="#">The Ludong</a>
</nav>
<div id="changetotext"><img src="https://res.cloudinary.com/dytmcam8b/image/upload/v1592684095/Chinese%20Restaurant/ludong.jpg"
alt="red lanterns" id="lanterns"></div>
<div class="padding1"></div>
<div class="bottom-menu d-flex flex-column flex-md-row justify-content-around flex-wrap">
<a href=""><div class="p-2 menuChoice" onclick="menu()">Menu</div></a>
<a href=""><div class="p-2 approach-choice">Approach</div></a>
<a href=""><div class="p-2 location-choice">Location</div></a>
<a href=""><div class="p-2 reservations-choice">Reservations</div></a>
<a href=""> <div class="p-2 gifts-choice">Gifts</div></a>
</div>
</div>
<script src="myscripts.js"></script>
</body>
</html>
工作良好
null
function remove (){
var el = document.getElementById("lanterns");
el.remove();
}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The Ludong Chinese Restaurant</title>
<meta name="description" content="The Ludong Chinese Restaurant">
<meta name="author" content="SitePoint">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css2?family=East+Sea+Dokdo&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
</head>
<body>
<button onclick="remove()">remove</button>
<nav class="navbar navbar-expand-md bg-dark navbar-dark" id="top-bar">
<a class="navbar-brand" href="#">The Ludong</a>
</nav>
<div id="changetotext"><img src="https://res.cloudinary.com/dytmcam8b/image/upload/v1592684095/Chinese%20Restaurant/ludong.jpg"
alt="red lanterns" id="lanterns"></div>
</body>
</html>
这就是你运行的代码吗? 如果是这样,您必须在HTML中调用menu()
,并使用按钮onclick
-或者您可以在脚本中执行如下操作:
button.addEventListener('click', () => menu());
function menu() {
el.remove();
}
您的onclick处理程序菜单
可以很好地调用,但是您没有看到它的效果,因为它会立即重新加载页面。 由于您将onclick处理程序附加到链接,您还需要阻止默认操作的发生--即跟随链接的目标(在本例中为空,因此是自重新加载)。
将菜单()
功能更改为以下内容:
function menu(e) {
e.preventDefault();
var el = document.getElementById("lanterns");
el.remove();
};
要接收触发事件的详细信息,请修改onclick属性,如下所示:
<a href=""><div class="p-2 menuChoice" onclick="menu(event)">Menu</div></a>
最佳做法
虽然上面的解决方案将按预期工作,但不建议将onclick处理程序直接归属于标记中的元素--将行为(JavaScript代码)与结构(HTML)分离是更好的实践。