【解決方法】新しい Web ページにジャンプできないようです

プログラミングQA


What i want is ,when i click on navigation , i want that navigation'c background to be changed.Background changed but for some reason i am still at home and navigation link is not working.Example after clicking on navigation,i am still on home page http://127.0.0.1:5500/index.html What i want is http://127.0.0.1:5500/nav/technology.html

私が試したこと:

<pre><!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
	</head>
	<body>
		<header class="header">
			<h1 class="nav-logo">
				<a href="index.html" class="header-logo">
					<span>t</span><span>a</span><span>l</span><span>e</span></a
				>
			</h1>
			<nav class="nav">
				<ul class="nav-list">
					<li class="nav-item"><a href="index.html">Home</a></li>
					<li class="nav-items">
						<a href="nav/world.html" class="nav-item-link">World</a>
					</li>
					<li class="nav-items">
						<a href="nav/technology.html " class="nav-item-link">technology</a>
					</li>
					<li class="nav-items">
						<a href="nav/gaming.html" class="nav-item-link">gaming</a>
					</li>
					<li class="nav-items">
						<a href="nav/sports.html" class="nav-item-link">sports</a>
					</li>
					<li class="nav-items">
						<a href="nav/blockchain.html" class="nav-item-link">blockchain</a>
					</li>
					<li class="nav-items">
						<a href="nav/entertain.html" class="nav-item-link">entertainment</a>
					</li>
					<li class="nav-items">
						<a href="nav/science.html" class="nav-item-link">science</a>
					</li>
					<li class="nav-items">
						<a href="nav/books.html" class="nav-item-link">books</a>
					</li>
				</ul>
			</nav>
			<div class="header-label">
				<label for="search-con" class="search-con">search</label>
				<input
					type="search"
					id="search-con"
					name="w"
					placeholder="search tale"
				/>
			</div>
		</header>
	</body>
</html>

"use strict";
const navItemLink document.querySelectorAll(".nav-item-link");
const header = document.querySelector(".header");

navItemLink.forEach((items) => {
	items.addEventListener("click", function (e) {
		e.preventDefault();
		console.log("this");
		header.classList.add("header-nav");
		console.log(items, this);
	});
});
@import url("https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;0,700;0,900;1,400&display=swap");
*,
*::after,
*::before {
  margin: 0;
  padding: 0;
  letter-spacing: 0.05rem;
  box-sizing: inherit; }

html {
  font-size: 62.5%; }

body {
  box-sizing: border-box; }

body {
  font-family: "Roboto", sans-serif;
  font-weight: 500; }

.nav-logo span {
  background-color: #fff;
  color: #000;
  margin-right: 1rem;
  text-transform: uppercase;
  padding: 0.3rem;
  font-size: 2.2rem;
  font-weight: 600; }

.search-con {
  color: #fff;
  font-family: inherit;
  align-items: flex-end;
  display: none; }

input[type="search"] {
  padding: 0.8rem;
  font-size: 1.4rem;
  text-transform: capitalize;
  font-family: inherit;
  background-color: #393636;
  border: none;
  color: #fff;
  width: 100%; }

.nav-logo a {
  text-decoration: none; }

.nav-list {
  display: flex;
  list-style: none;
  column-gap: 2.5rem;
  align-items: center;
  justify-content: center;
  margin-top: 8px; }

.nav-items a,
.nav-item a {
  text-decoration: none;
  font-size: 1.3rem;
  color: #fff;
  text-transform: capitalize; }

.nav-items a::after,
.nav-item a::after {
  content: "";
  display: block;
  margin: auto;
  height: 2px;
  margin-top: 8px;
  width: 100%;
  bottom: 12px;
  background-color: transparent;
  transition: all 0.4s; }

.nav-items > a:hover::after,
.nav-item > a:hover::after {
  background-color: #fff; }
.header {
  display: flex;
  background-color: #000;
  padding: 2rem;
  align-items: center;
  justify-content: space-around;
  position: sticky;
  width: 100%; }
  .header ::placeholder {
    color: #f8f9fa;
    opacity: 0.5; }

.nav-logo {
  cursor: pointer; }
.header-nav {
  background-color: #fff; }

解決策 1

私が欲しいのは、ナビゲーションをクリックすると、そのナビゲーションの背景が変更されることです

完全に理解しているかどうかわかりませんが、ナビゲーション リンクがクリックされたときに、現在のページへのリンクが特定の背景色を持つことを期待しているということですか? もしそうなら、それは可能ですが、ページを提供するために何を使用しているかによって異なります. サーバー側のレンダリング (つまり、Spring、ASP.NET、Django、PHP) の場合は、おそらくサーバー側にフラグを追加する必要があります。これをページ モデルに渡し、リンクにクラスを設定します。 クライアント側のレンダリング (つまり、Angular、React、Vue) であり、JS ルーティングを使用している場合、これらのフレームワークにはそれぞれ独自の属性/プロセッサがあると思います (つまり、Angular には routerLinkActive[^])

ただし、フレームワークを使用しているという証拠は見当たりません。これらは Javascript を使用した静的な HTML ページのように見えるため、実際には何も提案できません。

何らかの理由で、私はまだ家にいて、ナビゲーション リンクが機能していません。ナビゲーションをクリックした後の例、私はまだホームページ http://127.0.0.1:5500/index.html にいます http://127.0. 0.1:5500/nav/technology.html

これは非常に簡単に診断できます。Javascript でナビゲーションをキャンセルしています。

items.addEventListener("click", function (e) {
  e.preventDefault()

ここであなたが言っているのは、「誰かがリンクをクリックすると、そのリンクへの移動をキャンセルする」ということです。つまり、あなたのページは、あなたが提供したどのアドレスにも移動しません。

コメント

タイトルとURLをコピーしました