getElementsByTagName在脚本位于/body之前仍返回undefined。

huangapple go评论100阅读模式
英文:

getElementsByTagName returns undefined even with the script before /body

问题

我是一个完全不懂JavaScript的初学者,我完全被卡住了。我尝试通过调整在教程中找到的代码来创建一个搜索栏过滤系统。目标是能够按电影的名称、导演或发行年份进行过滤。

每个电影的信息分别在<h1><h2><h3>标签之间。排序是通过getElementsByTagName完成的,并且对导演和发行年份正常工作,但只要我添加电影标题,就什么都不起作用了。

从我在Firefox中看到的情况来看,导致问题的原因是我存储电影名称的变量未定义(Uncaught TypeError: a is undefined)。经过一些研究,我了解到此错误在页面加载前运行脚本时出现,因此我将其放置在</body>之前,但问题仍然存在。

我想理解我的代码有什么问题。

  1. function myFunction() {
  2. // 声明变量
  3. var input, filter, ul, li, a, b, c, i, title, director, date;
  4. input = document.getElementById('myInput');
  5. filter = input.value.toUpperCase();
  6. ul = document.getElementById("myUL");
  7. li = ul.getElementsByTagName('li');
  8. // 遍历所有列表项,并隐藏不匹配搜索查询的项
  9. for (i = 0; i < li.length; i++) {
  10. a = li[i].getElementsByTagName("h1")[0];
  11. b = li[i].getElementsByTagName("h2")[0];
  12. c = li[i].getElementsByTagName("h3")[0];
  13. title = a.textContent || a.innerText;
  14. director = b.textContent || b.innerText;
  15. date = c.textContent || c.innerText;
  16. if (title.toUpperCase().indexOf(filter) > -1 || director.toUpperCase().indexOf(filter) > -1 || date.toUpperCase().indexOf(filter) > -1) {
  17. li[i].style.display = "";
  18. } else {
  19. li[i].style.display = "none";
  20. }
  21. }
  22. }
  1. <ul id="myUL" class="gallery container">
  2. <li>
  3. <div class="overlay"></div>
  4. <div class="info">
  5. <a href="#" class="btn"><img src="example.jpg"></a>
  6. <div class="description">
  7. <h1 style="display:none">TITLE</h1>
  8. <h2>DIRECTOR</h2>
  9. <h3>DATE</h3>
  10. <p>
  11. SYNOPSIS
  12. </p>
  13. </div>
  14. </div>
  15. <div class="bg-img">
  16. <img src="example2.jpg">
  17. </div>
  18. </li>
  19. </ul>

希望这可以帮助你找到代码中的问题。

英文:

I am a complete beginner in JavaScript and I am completely blocked. I am trying to create a search bar filtering system by adapting a code found in a tutorial. The goal is to be able to filter a list of movies by name, director or year of release.

Each of these information are respectively between tags &lt;h1&gt;, &lt;h2&gt; then &lt;h3&gt;. The sorting is done by getElementsByTagName and works as expected with the director and year of release, but as soon as I add the title of the movies, nothing works anymore.

From what I see in Firefox, the cause being that the variable in which I store the movie name is not defined (Uncaught TypeError: a is undefined). After some research, I was able to read that this error appears when the script is run before the page is loaded, so I placed it just before the /body, but the problem persists.

I would like to understand what is wrong with my code.

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. function myFunction() {
  2. // Declare variables
  3. var input, filter, ul, li, a, b, c, i, title, director, date;
  4. input = document.getElementById(&#39;myInput&#39;);
  5. filter = input.value.toUpperCase();
  6. ul = document.getElementById(&quot;myUL&quot;);
  7. li = ul.getElementsByTagName(&#39;li&#39;);
  8. // Loop through all list items, and hide those who don&#39;t match the search query
  9. for (i = 0; i &lt; li.length; i++) {
  10. a = li[i].getElementsByTagName(&quot;h1&quot;)[0];
  11. b = li[i].getElementsByTagName(&quot;h2&quot;)[0];
  12. c = li[i].getElementsByTagName(&quot;h3&quot;)[0];
  13. title = a.textContent || a.innerText;
  14. director = b.textContent || b.innerText;
  15. date = c.textContent || c.innerText;
  16. if (title.toUpperCase().indexOf(filter) &gt; -1 || director.toUpperCase().indexOf(filter) &gt; -1 || date.toUpperCase().indexOf(filter) &gt; -1) {
  17. li[i].style.display = &quot;&quot;;
  18. } else {
  19. li[i].style.display = &quot;none&quot;;
  20. }
  21. }
  22. }

<!-- language: lang-html -->

  1. &lt;ul id=&quot;myUL&quot; class=&quot;gallery container&quot;&gt;
  2. &lt;li&gt;
  3. &lt;div class=&quot;overlay&quot;&gt;&lt;/div&gt;
  4. &lt;div class=&quot;info&quot;&gt;
  5. &lt;a href=&quot;#&quot; class=&quot;btn&quot;&gt;&lt;img src=&quot;example.jpg&quot;&gt;&lt;/a&gt;
  6. &lt;div class=&quot;description&quot;&gt;
  7. &lt;h1 style=&quot;display:none&quot;&gt;TITLE&lt;/h1&gt;
  8. &lt;h2&gt;DIRECTOR&lt;/h2&gt;
  9. &lt;h3&gt;DATE&lt;/h3&gt;
  10. &lt;p&gt;
  11. SYNOPSIS
  12. &lt;/p&gt;
  13. &lt;/div&gt;
  14. &lt;/div&gt;
  15. &lt;div class=&quot;bg-img&quot;&gt;
  16. &lt;img src=&quot;example2.jpg&quot;&gt;
  17. &lt;/div&gt;
  18. &lt;/li&gt;
  19. &lt;/ul&gt;

<!-- end snippet -->

答案1

得分: 1

以下是您要翻译的内容:

在原帖中,&lt;script&gt;标签位于正确位置。不幸的是,这只是解决方案的一部分。

问题

  • HTML中的&lt;input&gt;在哪里?

  • 为每个类别过滤器添加了复选框:titledirectordate

  • 使用过时的方法,如.getElementsByTagName()在[某些情况下][1]可能会有问题。相反,使用[.querySelectorAll()][2]。

  • window的“load”事件上调用搜索函数几乎没有意义。页面与用户之间的交互可以在&lt;input id=&quot;find&quot;&gt;&lt;form&gt;上触发的“click”、“input”、“change”或“submit”事件上处理。在示例中,一个&lt;form&gt;包裹了所有元素,并注册了[“submit”事件][3]。

  • .textContent.innerText几乎是[相同的][4],使用其中之一即可。

  • &lt;h1&gt;&lt;h6&gt;是标题,应用于按重要性排序的内容的标题。页面应只使用一个&lt;h1&gt;。将&lt;h1&gt;&lt;h2&gt;&lt;h3&gt;添加到每个&lt;li&gt;不仅令人讨厌,而且在语义上也很糟糕。使用CSS来调整font-sizefont-weight

示例中有注释的详细信息

注意:源代码的某些部分带有仅供演示目的的标签,这不是必需的,只是用来生成&lt;ul&gt;的内容。

  1. // 仅供演示目的
  2. const data = [{
  3. "title": "Plain Dirty (a.k.a. Briar Patch)",
  4. "director": "Jodi MacEllen",
  5. "date": "7/16/2018"
  6. }, {
  7. "title": "Cake",
  8. "director": "Faber Pude",
  9. "date": "5/3/2012"
  10. }, {
  11. "title": "Exit Smiling",
  12. "director": "Bryant Whytock",
  13. "date": "1/26/1972"
  14. }, {
  15. "title": "Mission: Impossible III",
  16. "director": "Allison Kayzer",
  17. "date": "5/14/1986"
  18. }, {
  19. "title": "Hollywood Between Paranoia and Sci-Fi. The Power of Myth",
  20. "director": "Isacco Yoell",
  21. "date": "3/14/1980"
  22. }, {
  23. "title": "Barabbas",
  24. "director": "Humfrid Scandrett",
  25. "date": "6/12/2018"
  26. }, {
  27. "title": "Stolen (Stolen Lives)",
  28. "director": "Harv Ginman",
  29. "date": "2/19/2014"
  30. }, {
  31. "title": "Casper",
  32. "director": "Ferne Nester",
  33. "date": "9/20/2011"
  34. }, {
  35. "title": "Journey to the Beginning of Time",
  36. "director": "Dodi Chaster",
  37. "date": "12/4/2014"
  38. }, {
  39. "title": "Home Run",
  40. "director": "Nonna Bugler",
  41. "date": "5/4/1972"
  42. }];
  43. // 引用&lt;ul&gt;
  44. const list = document.querySelector("ul");
  45. // 仅供演示目的
  46. data.forEach(movie => {
  47. const li = `<li><i>${movie.title}</i> -
  48. <b>${movie.director}</b> -
  49. <time>${movie.date}</time></li>`;
  50. list.insertAdjacentHTML("beforeend", li);
  51. });
  52. // 引用&lt;form&gt;
  53. const F = document.forms.main;
  54. // 引用所有&lt;input&gt;和&lt;fieldset&gt;
  55. const fc = F.elements;
  56. // 引用&lt;input id=&quot;find&quot;&gt;
  57. const find = fc.find;
  58. // 将所有[name=&quot;chx&quot;]的HTMLCollection转换为数组
  59. const filters = Array.from(fc.chx);
  60. // 将所有&lt;li&gt;转换为NodeList,然后转换为数组
  61. const items = Array.from(document.querySelectorAll("li"));
  62. // 注册&lt;form&gt;到“submit”事件
  63. F.onsubmit = searchList;
  64. // 事件处理程序传递事件对象
  65. function searchList(event) {
  66. // 阻止&lt;form&gt;重定向页面
  67. event.preventDefault();
  68. /**
  69. * 从&lt;input id=&quot;find&quot;&gt;获取用户搜索词
  70. * 将字符串转换为数组。
  71. */
  72. const keywords = find.value.toLowerCase().split(" ");
  73. // 隐藏所有&lt;li&gt;
  74. items.forEach(li => li.style.display = "none");
  75. // 获取每个已选复选框的索引号数组
  76. const checked = filters.flatMap((chx, idx) => chx.checked ? idx : []);
  77. /**
  78. * 对于每个&lt;li&gt;...
  79. * ...从&lt;li&gt;中的&lt;i&gt;、&lt;b&gt;和&lt;time&gt;中获取文本的数组...
  80. * ...创建一个仅包含与已检查数组中的数字匹配的索引的文本的数组,然后将其转换为字符串...
  81. * ...如果搜索词中的一个也在当前&lt;li&gt;的文本中...
  82. * ...显示&lt;li&gt;
  83. */
  84. items.forEach(li => {
  85. let text = Array.from(li.children).map(ele => ele.textContent.toLowerCase());
  86. let filtered = text.filter((txt, cnt) => checked.includes(cnt)).join("");
  87. if (keywords.some(word => filtered.includes(word))) {
  88. li.style.display = "list-item";
  89. }
  90. });
  91. }
  1. :root {
  2. font: 2ch/1.15 "Segoe UI";
  3. }
  4. fieldset {
  5. padding-right: 20px;
  6. }
  7. input {
  8. font: inherit;
  9. height: 3.5ex;
  10. }
  11. #find {
  12. width: 80%;
  13. margin: 15px 0 0 25px;
  14. }
  15. [type="submit"] {
  16. font-variant: small-caps;
  17. cursor: pointer;
  18. }
  19. menu,
  20. label {
  21. display: flex;
  22. align-items: center;
  23. margin-left: 15px;
  24. }
  25. menu
  26. <details>
  27. <summary>英文:</summary>
  28. In the OP, the `&lt;script&gt;` tag is in the correct place. Unfortunately, that was only a part of the solution.
  29. Problems
  30. -
  31. - Where&#39;s the `&lt;input&gt;` in the HTML?
  32. - Added a checkbox for each category filter: `title`, `director`, and `date`.
  33. - Using antiquated methods such as `.getElementsByTagName()` can be problematic under [certain circumstances][1]. Instead, use [`.querySelectorAll()`][2].
  34. - Calling the search function on &quot;load&quot; event of `window` makes very little sense. The interaction between the page and user can be handled on a &quot;click&quot;, &quot;input&quot;, &quot;change&quot;, or &quot;submit&quot; event triggered on either the `&lt;input id=&quot;find&quot;&gt;` or a `&lt;form&gt;`. In the example, a `&lt;form&gt;` is wrapped around all of the elements and is registered to the [&quot;submit&quot; event][3].
  35. - `.textContent` and `.innerText` are [almost identical][4], use one or the other.
  36. - `&lt;h1&gt;` thru `&lt;h6&gt;` are headings and should be used for titles of content organized in the order of importance. Only a single `&lt;h1&gt;` should be used for a page. Adding `&lt;h1&gt;`, `&lt;h2&gt;`, and `&lt;h3&gt;` to each `&lt;li&gt;` is not only an eyesore but it&#39;s semantically horrible as well. Use CSS to adjust `font-size` and `font-weight` instead.
  37. **Details are commented in example**
  38. **Note:** There are parts of the source labeled with *For demo purposes*, which is not required and is there just to generate the content for the `&lt;ul&gt;`.
  39. &lt;!-- begin snippet: js hide: false console: true babel: false --&gt;
  40. &lt;!-- language: lang-js --&gt;
  41. // For demo purposes
  42. const data = [{
  43. &quot;title&quot;: &quot;Plain Dirty (a.k.a. Briar Patch)&quot;,
  44. &quot;director&quot;: &quot;Jodi MacEllen&quot;,
  45. &quot;date&quot;: &quot;7/16/2018&quot;
  46. }, {
  47. &quot;title&quot;: &quot;Cake&quot;,
  48. &quot;director&quot;: &quot;Faber Pude&quot;,
  49. &quot;date&quot;: &quot;5/3/2012&quot;
  50. }, {
  51. &quot;title&quot;: &quot;Exit Smiling&quot;,
  52. &quot;director&quot;: &quot;Bryant Whytock&quot;,
  53. &quot;date&quot;: &quot;1/26/1972&quot;
  54. }, {
  55. &quot;title&quot;: &quot;Mission: Impossible III&quot;,
  56. &quot;director&quot;: &quot;Allison Kayzer&quot;,
  57. &quot;date&quot;: &quot;5/14/1986&quot;
  58. }, {
  59. &quot;title&quot;: &quot;Hollywood Between Paranoia and Sci-Fi. The Power of Myth&quot;,
  60. &quot;director&quot;: &quot;Isacco Yoell&quot;,
  61. &quot;date&quot;: &quot;3/14/1980&quot;
  62. }, {
  63. &quot;title&quot;: &quot;Barabbas&quot;,
  64. &quot;director&quot;: &quot;Humfrid Scandrett&quot;,
  65. &quot;date&quot;: &quot;6/12/2018&quot;
  66. }, {
  67. &quot;title&quot;: &quot;Stolen (Stolen Lives)&quot;,
  68. &quot;director&quot;: &quot;Harv Ginman&quot;,
  69. &quot;date&quot;: &quot;2/19/2014&quot;
  70. }, {
  71. &quot;title&quot;: &quot;Casper&quot;,
  72. &quot;director&quot;: &quot;Ferne Nester&quot;,
  73. &quot;date&quot;: &quot;9/20/2011&quot;
  74. }, {
  75. &quot;title&quot;: &quot;Journey to the Beginning of Time&quot;,
  76. &quot;director&quot;: &quot;Dodi Chaster&quot;,
  77. &quot;date&quot;: &quot;12/4/2014&quot;
  78. }, {
  79. &quot;title&quot;: &quot;Home Run&quot;,
  80. &quot;director&quot;: &quot;Nonna Bugler&quot;,
  81. &quot;date&quot;: &quot;5/4/1972&quot;
  82. }];
  83. // Reference &lt;ul&gt;
  84. const list = document.querySelector(&quot;ul&quot;);
  85. // For demo purposes
  86. data.forEach(movie =&gt; {
  87. const li = `&lt;li&gt;&lt;i&gt;${movie.title}&lt;/i&gt; -
  88. &lt;b&gt;${movie.director}&lt;/b&gt; -
  89. &lt;time&gt;${movie.date}&lt;/time&gt;&lt;/li&gt;`;
  90. list.insertAdjacentHTML(&quot;beforeend&quot;, li);
  91. });
  92. // Reference the &lt;form&gt;
  93. const F = document.forms.main;
  94. // Reference all &lt;input&gt; and &lt;fieldset&gt;
  95. const fc = F.elements;
  96. // Reference &lt;input id=&quot;find&quot;&gt;
  97. const find = fc.find;
  98. // Make HTMLCollection of all [name=&quot;chx&quot;] into an array
  99. const filters = Array.from(fc.chx);
  100. // Make NodeList of all &lt;li&gt; then into an array
  101. const items = Array.from(document.querySelectorAll(&quot;li&quot;));
  102. // Register &lt;form&gt; to &quot;submit&quot; event
  103. F.onsubmit = searchList;
  104. // Event handler passes Event Object
  105. function searchList(event) {
  106. // Stop &lt;form&gt; from redirecting page
  107. event.preventDefault();
  108. /**
  109. * Get user search words from &lt;input id=&quot;find&quot;&gt;
  110. * Convert string into an array.
  111. */
  112. const keywords = find.value.toLowerCase().split(&quot; &quot;);
  113. // Hide all &lt;li&gt;
  114. items.forEach(li =&gt; li.style.display = &quot;none&quot;);
  115. // Get an array of index numbers of each checked checkbox
  116. const checked = filters.flatMap((chx, idx) =&gt; chx.checked ? idx : []);
  117. /**
  118. * For each &lt;li&gt;...
  119. * ...Make an array (text) of text from &lt;i&gt;, &lt;b&gt;, and &lt;time&gt; in &lt;li&gt;...
  120. * ...Make an array (filtered) of texts of only index that
  121. * match the numbers in checked array and convert it into a string...
  122. * ...If one of the search words is also in the text of the current &lt;li&gt;...
  123. * ...show the &lt;li&gt;
  124. */
  125. items.forEach(li =&gt; {
  126. let text = Array.from(li.children).map(ele =&gt; ele.textContent.toLowerCase());
  127. let filtered = text.filter((txt, cnt) =&gt; checked.includes(cnt)).join(&quot;&quot;);
  128. if (keywords.some(word =&gt; filtered.includes(word))) {
  129. li.style.display = &quot;list-item&quot;;
  130. }
  131. });
  132. }
  133. &lt;!-- language: lang-css --&gt;
  134. :root {
  135. font: 2ch/1.15 &quot;Segoe UI&quot;;
  136. }
  137. fieldset {
  138. padding-right: 20px;
  139. }
  140. input {
  141. font: inherit;
  142. height: 3.5ex;
  143. }
  144. #find {
  145. width: 80%;
  146. margin: 15px 0 0 25px;
  147. }
  148. [type=&quot;submit&quot;] {
  149. font-variant: small-caps;
  150. cursor: pointer;
  151. }
  152. menu,
  153. label {
  154. display: flex;
  155. align-items: center;
  156. margin-left: 15px;
  157. }
  158. menu {
  159. list-style: none;
  160. margin-left: -15px;
  161. }
  162. &lt;!-- language: lang-html --&gt;
  163. &lt;form id=&quot;main&quot;&gt;
  164. &lt;fieldset&gt;
  165. &lt;legend&gt;Search by keywords delimited by a space&lt;/legend&gt;
  166. &lt;input id=&quot;find&quot; placeholder=&quot;x the 2018&quot; type=&quot;search&quot;&gt;&lt;input type=&quot;submit&quot; value=&quot;Find&quot;&gt;
  167. &lt;menu&gt;Filters:&amp;nbsp;
  168. &lt;label&gt;&lt;input name=&quot;chx&quot; type=&quot;checkbox&quot; checked&gt; Title &lt;/label&gt;
  169. &lt;label&gt;&lt;input name=&quot;chx&quot; type=&quot;checkbox&quot; checked&gt; Director &lt;/label&gt;
  170. &lt;label&gt;&lt;input name=&quot;chx&quot; type=&quot;checkbox&quot; checked&gt; Date &lt;/label&gt;
  171. &lt;/menu&gt;
  172. &lt;ul&gt;&lt;/ul&gt;
  173. &lt;/fieldset&gt;
  174. &lt;/form&gt;
  175. &lt;!-- end snippet --&gt;
  176. [1]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection
  177. [2]: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
  178. [3]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit_event
  179. [4]: https://www.microfocus.com/documentation/silk-test/200/en/silktestworkbench-help-en/SILKTEST-21EEFF3F-DIFFERENCEBETWEENTEXTCONTENTSINNERTEXTINNERHTML-REF.html
  180. </details>
  181. # 答案2
  182. **得分**: 0
  183. 你可以在代码中添加 `window.onload` 来调用你的函数这意味着只有在页面加载完成后才会触发你的函数
  184. ```javascript
  185. window.onload = function() {
  186. myFunction();
  187. };
  188. function myFunction() {
  189. // 声明变量
  190. var input, filter, ul, li, a, b, c, i, title, director, date;
  191. ul = document.getElementById("myUL");
  192. li = ul.getElementsByTagName('li');
  193. // 循环遍历所有列表项,并隐藏不匹配搜索查询的项
  194. for (i = 0; i < li.length; i++) {
  195. a = li[i].getElementsByTagName("h1")[0];
  196. b = li[i].getElementsByTagName("h2")[0];
  197. c = li[i].getElementsByTagName("h3")[0];
  198. title = a.textContent || a.innerText;
  199. director = b.textContent || b.innerText;
  200. date = c.textContent || c.innerText;
  201. console.log(title, director, date);
  202. if (title.toUpperCase().indexOf(filter) > -1 || director.toUpperCase().indexOf(filter) > -1 || date.toUpperCase().indexOf(filter) > -1) {
  203. li[i].style.display = "";
  204. } else {
  205. li[i].style.display = "none";
  206. }
  207. }
  208. }
  1. <ul id="myUL" class="gallery container">
  2. <li>
  3. <div class="overlay"></div>
  4. <div class="info">
  5. <a href="#" class="btn"><img src="https://picsum.photos/200"></a>
  6. <div class="description">
  7. <h1 style="display:none">TITLE</h1>
  8. <h2>DIRECTOR</h2>
  9. <h3>DATE</h3>
  10. <p>
  11. SYNOPSIS
  12. </p>
  13. </div>
  14. </div>
  15. <div class="bg-img">
  16. <img src="https://picsum.photos/200">
  17. </div>
  18. </li>
  19. </ul>

这是你提供的代码的翻译部分。

英文:

you could add windoe.onload to call your function, meaning only when page is loaded your function will fire.

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. window.onload = function() {
  2. myFunction();
  3. };
  4. function myFunction() {
  5. // Declare variables
  6. var input, filter, ul, li, a, b, c, i, title, director, date;
  7. ul = document.getElementById(&quot;myUL&quot;);
  8. li = ul.getElementsByTagName(&#39;li&#39;);
  9. // Loop through all list items, and hide those who don&#39;t match the search query
  10. for (i = 0; i &lt; li.length; i++) {
  11. a = li[i].getElementsByTagName(&quot;h1&quot;)[0];
  12. b = li[i].getElementsByTagName(&quot;h2&quot;)[0];
  13. c = li[i].getElementsByTagName(&quot;h3&quot;)[0];
  14. title = a.textContent || a.innerText;
  15. director = b.textContent || b.innerText;
  16. date = c.textContent || c.innerText;
  17. console.log(title, director, date);
  18. if (title.toUpperCase().indexOf(filter) &gt; -1 || director.toUpperCase().indexOf(filter) &gt; -1 || date.toUpperCase().indexOf(filter) &gt; -1) {
  19. li[i].style.display = &quot;&quot;;
  20. } else {
  21. li[i].style.display = &quot;none&quot;;
  22. }
  23. }
  24. }

<!-- language: lang-html -->

  1. &lt;ul id=&quot;myUL&quot; class=&quot;gallery container&quot;&gt;
  2. &lt;li&gt;
  3. &lt;div class=&quot;overlay&quot;&gt;&lt;/div&gt;
  4. &lt;div class=&quot;info&quot;&gt;
  5. &lt;a href=&quot;#&quot; class=&quot;btn&quot;&gt;&lt;img src=&quot;https://picsum.photos/200&quot;&gt;&lt;/a&gt;
  6. &lt;div class=&quot;description&quot;&gt;
  7. &lt;h1 style=&quot;display:none&quot;&gt;TITLE&lt;/h1&gt;
  8. &lt;h2&gt;DIRECTOR&lt;/h2&gt;
  9. &lt;h3&gt;DATE&lt;/h3&gt;
  10. &lt;p&gt;
  11. SYNOPSIS
  12. &lt;/p&gt;
  13. &lt;/div&gt;
  14. &lt;/div&gt;
  15. &lt;div class=&quot;bg-img&quot;&gt;
  16. &lt;img src=&quot;https://picsum.photos/200&quot;&gt;
  17. &lt;/div&gt;
  18. &lt;/li&gt;
  19. &lt;/ul&gt;

<!-- end snippet -->

huangapple
  • 本文由 发表于 2023年5月21日 23:36:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/76300669.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定