【发布时间】:2020-09-30 13:13:06
【问题描述】:
我写信是想问如何摆脱我正在构建的页面的重复代码。我大约一个月前开始学习html。我知道其他语言,但除了 C 之外从未使用过任何其他语言。我对 C 的了解来自大约 10 年前我参加的两门编程大学入门课程。在这 10 年的差距中,我做了零编程。
我的页面当前有一个容器、一个行和三个列。每个列都包含一个引导卡。我希望最终在多页上有几十或几百行卡片。如果我尝试添加更多行卡片,我很快就会得到数百行重复代码。如果我想在未来对卡片进行更改,我想这会带来很大的问题。
据我所知,每张卡片唯一独特的组成部分是 href 和 img src 链接、卡片标题和卡片文本。
我一直在阅读有关如何消除重复代码的信息。我遇到了几篇文章,我发现我无法单独使用 html 来实现这一点。提到的文章使用了我不熟悉的其他语言和方法,如 javascript、jquery、模板引擎、blockwrapper。我想有几种方法可以摆脱重复。我的想法是使用对象或函数将唯一信息传递到卡片中,但我不知道该怎么做。
我想使用一种简单、传统的方法,并且可以向我介绍新的技能/语言。我也对新颖或非常规的方法持开放态度。非常感谢您的帮助。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="styles.css">
<title>Index Page</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col">
<div class="card text-center border-0 d-flex align-items-center justify-content-center">
<a href="https://www.youtube.com/watch?v=iEGFFyv0MH4&t=1070s">
<img src="https://i.ytimg.com/an_webp/iEGFFyv0MH4/mqdefault_6s_480x270.webp?du=3000&sqp=CLj_hPcF&rs=AOn4CLDOvo2tUWkm3QGC8E1BjBEWRa55Hw" style="width:80px;height:80px;">
</a>
<div class="card-body">
<h5 class="card-title">Video 1</h5>
<p class="card-text">Nighttime Ramen ???? [jazzy beats / lofi hip hop mix]</p>
<a href="https://www.youtube.com/watch?v=iEGFFyv0MH4&t=1070s" class="btn btn-primary">View Video</a>
</div>
</div>
</div>
<div class="col">
<div class="card text-center border-0 d-flex align-items-center justify-content-center">
<a href="https://www.youtube.com/watch?v=8Zuwg_1Uit0">
<img src="https://i.ytimg.com/an_webp/8Zuwg_1Uit0/mqdefault_6s.webp?du=3000&sqp=CKixhfcF&rs=AOn4CLD445U_D61yZfcEysryoe_REtuCog" style="width:80px;height:80px;">
</a>
<div class="card-body">
<h5 class="card-title">Video 2</h5>
<p class="card-text">National anthem of Vietnam shown on VTV1 each morning</p>
<a href="https://www.youtube.com/watch?v=8Zuwg_1Uit0" class="btn btn-primary">View Video</a>
</div>
</div>
</div>
<div class="col">
<div class="card text-center border-0 d-flex align-items-center justify-content-center">
<a href="https://www.youtube.com/watch?v=_rTuPEdlhQs">
<img src="https://i.ytimg.com/an_webp/_rTuPEdlhQs/mqdefault_6s.webp?du=3000&sqp=CI64hfcF&rs=AOn4CLBuV_ZCwrAUoIj_dfv3in_OlYytNQ" style="width:80px;height:80px;">
</a>
<div class="card-body">
<h5 class="card-title">Video 3</h5>
<p class="card-text">Baby Boomers Speaking To Us From 1989</p>
<a href="https://www.youtube.com/watch?v=_rTuPEdlhQs" class="btn btn-primary">View Video</a>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
【问题讨论】:
-
对于您所描述的情况,我真的建议您使用数据库存储视频网址。您甚至可以创建一个简单的管理页面,其中只有一个输入字段和一个添加按钮,以将未来的 url 存储在您的数据库中 - 如果您不想手动通过数据库工作台执行此操作。无论如何,这个想法是您从数据库中获取 url,使用从数据库中获取的 url 循环一个 html 标记结构。然后,您的标记将根据数据库中视频网址的数量动态创建。如果你愿意,我可以给你一个 PHP 的小例子。
-
我对您从数据库中获取 url 并为 html 标记结构使用循环的想法非常感兴趣。非常感谢您提供的那个小例子!
-
您是否找到了将继续推进的解决方案?
-
感谢您的帮助,马丁。我想继续你的解决方案。我很好奇,在这种情况下,是否有替代数据库来存储 url?是否可以使用数组或 txt 文件之类的东西来存储适当的值?然后就像在您的示例中一样,从该数组或文件中获取数据以用于围绕 HTML 结构的周围循环?
-
是的,您可以将值存储到数组中。甚至是一个文件(比如说 CSV 文件)并将该内容存储到一个数组中。您可以使其多维来表示数据库示例中相同数量的字段。您还可以对数组进行硬编码,并在进行过程中简单地添加新元素。方法相同,循环遍历数组并打印
[i]索引以获取内容。
标签: javascript html function object