Код JavaScript, скопированный с ручки кода, выдает ошибку

#javascript #html #css

Вопрос:

Я новичок в HTML CSS и javascript. Я немного поработал над созданием анимированных вкладок с индикаторами, используя HTML, CSS и JavaScript. Я застрял с редактированием файла JavaScript и ошибкой, которую я получаю при редактировании этого файла и получаю «синтаксическую ошибку в JavaScript» при использовании среды разработки Dreamweaver. Я попытался добавить ключевое слово функции и закрыть / добавить скобки, но пока не получилось. Похоже, CSS работает нормально, и я застрял с правильным написанием файла javascript. Там может не быть никаких синтаксических ошибок, так как он отлично работает в https://codepen.io/. Когда я компилирую его в Adobe DreamViewer, программное обеспечение выдает синтаксическую ошибку в самой 1 — й строке.

Причина, по которой я думаю, что это ошибка javascript, заключается в том, что, как я показал в примере, невозможно перемещаться между вкладками КОДА, О ПРОГРАММЕ, СЛУЖБАХ и КОНТАКТАХ в index.html страница (Изображение прилагается).

Результат работы консоли Chrome

введите описание изображения здесь

введите описание изображения здесь

HTML

 <!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="styles.css">
    <script src="myScript.js"></script>
</head>

<div class="tabs">
    <div class="tab-header">
        <div class="active">
                    <i class="fa fa-code"></i>Code
            </div>      
        <div>
                <i class="fa fa-pencil-square-o"></i>About
        </div>      
        <div>
                <i class="fa fa-bar-chart"></i>Services
        </div>      
        <div>
                <i class="fa fa-envelop-o"></i>Contact
        </div>          
    </div>      
    <div class="tab-indicator"></div>
    <div class="tab-body">
        <div class="active">
            <h2>This is code section</h2>
            <p>Test is all about fun</p>
        </div>
        <div>
            <h2>This is about section</h2>
            <p>Test is all about fun</p>
        </div>      
        <div>
            <h2>This is services section</h2>
            <p>Test is all about fun</p>
        </div>      
        <div>
            <h2>This is section</h2>
            <p>Test is all about fun</p>
        </div>
        </div>  
</div>
</html>
 

язык JavaScript

 let tabHeader = document.getElementsByClassName("tab-header")[0];
let tabIndicator = document.getElementsByClassName("tab-indicator")[0];
let tabBody = document.getElementsByClassName("tab-body")[0];

let tabsPane = tabHeader.getElementsByTagName("div");

for(let i=0;i<tabsPane.length;i  ){
  tabsPane[i].addEventListener("click",function(){
    tabHeader.getElementsByClassName("active")[0].classList.remove("active");
    tabsPane[i].classList.add("active");
    tabBody.getElementsByClassName("active")[0].classList.remove("active");
    tabBody.getElementsByTagName("div")[i].classList.add("active");
    
    tabIndicator.style.left = `calc(calc(100% / 4) * ${i})`;
  });
}
 

CSS

 body {
  background:#ddd;
  font-family:"Raleway";
}
.tabs {
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:500px;
  height:250px;
  background:#f5f5f5;
  padding:20px 30px;
  overflow:hidden;
  border-radius:50px;
  box-shadow:5px 10px 5px #ccc;
}
.tabs .tab-header {
  height:60px;
  display:flex;
  align-items:center;
}
.tabs .tab-header > div {
  width:calc(100% / 4);
  text-align:center;
  color:#888;
  font-weight:600;
  cursor:pointer;
  font-size:14px;
  text-transform:uppercase;
  outline:none;
}
.tabs .tab-header > div > i {
  display:block;
  margin-bottom:5px;
}
.tabs .tab-header > div.active {
  color:#00acee;
}
.tabs .tab-indicator {
  position:relative;
  width:calc(100% / 4);
  height:5px;
  background:#00acee;
  left:0px;
  border-radius:5px;
  transition:all 500ms ease-in-out;
}
.tabs .tab-body {
  position:relative;
  height:calc(100% - 60px);
  padding:10px 5px;
}
.tabs .tab-body > div {
  position:absolute;
  top:-200%;
  opacity:0;
  transform:scale(0.9);
  transition:opacity 500ms ease-in-out 0ms,
    transform 500ms ease-in-out 0ms;
}
.tabs .tab-body > div.active {
  top:0px;
  opacity:1;
  transform:scale(1);
}
 

Комментарии:

1. В чем именно заключается ошибка и какая часть кода ее вызывает?

2. Ваш код JavaScript в том виде, в каком он опубликован, не выдает мне синтаксическую ошибку от узла.

3. Если HTML, который вы показываете в вопросе, действительно является тем HTML, который вы запускаете, в нем есть ошибки. Между классом и его знаком равенства не должно быть пробелов, ни после знака равенства, ни перед кавычками. JS не сможет найти элементы. Вы должны увидеть в журнале консоли вашего браузера некоторые ошибки, которые описывают это.

4. @Pointy Я изучил этот код с помощью CodePen. там нам не нужно объявлять функции, как я чувствую. но когда я копирую тот же код из CodePen JavaScript в программное обеспечение Adobe Dreamweaver, в нем говорится, что в 1-й строке есть ошибка, и я не могу проверить дальнейшие синтаксические ошибки. В любом случае ожидаемые результаты не приходят через Adobe Dreamweaver, хотя я сделал часть ссылок в html-коде.

5. @AHaworth пробелы = в HTML-разметке совершенно нормальны. Смотрите эту спецификацию и обратите внимание, что = она может быть окружена нулем или более пробелов.

Ответ №1:

Ваш код работает нормально. Вам не хватает метки тела

 </head>
<body>    <!-- Add this --- >

<div class="tabs">
.
 .
.
 .

   <div>
            <h2>This is section</h2>
            <p>Test is all about fun</p>
        </div>
        </div>  
</div>
</body> <!-- Add this --- >
</html>
 
 let tabHeader = document.getElementsByClassName("tab-header")[0];
let tabIndicator = document.getElementsByClassName("tab-indicator")[0];
let tabBody = document.getElementsByClassName("tab-body")[0];

let tabsPane = tabHeader.getElementsByTagName("div");

for(let i=0;i<tabsPane.length;i  ){
  tabsPane[i].addEventListener("click",function(){
    tabHeader.getElementsByClassName("active")[0].classList.remove("active");
    tabsPane[i].classList.add("active");
    tabBody.getElementsByClassName("active")[0].classList.remove("active");
    tabBody.getElementsByTagName("div")[i].classList.add("active");
    
    tabIndicator.style.left = `calc(calc(100% / 4) * ${i})`;
  });
} 
 body {
  background:#ddd;
  font-family:"Raleway";
}
.tabs {
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:500px;
  height:250px;
  background:#f5f5f5;
  padding:20px 30px;
  overflow:hidden;
  border-radius:50px;
  box-shadow:5px 10px 5px #ccc;
}
.tabs .tab-header {
  height:60px;
  display:flex;
  align-items:center;
}
.tabs .tab-header > div {
  width:calc(100% / 4);
  text-align:center;
  color:#888;
  font-weight:600;
  cursor:pointer;
  font-size:14px;
  text-transform:uppercase;
  outline:none;
}
.tabs .tab-header > div > i {
  display:block;
  margin-bottom:5px;
}
.tabs .tab-header > div.active {
  color:#00acee;
}
.tabs .tab-indicator {
  position:relative;
  width:calc(100% / 4);
  height:5px;
  background:#00acee;
  left:0px;
  border-radius:5px;
  transition:all 500ms ease-in-out;
}
.tabs .tab-body {
  position:relative;
  height:calc(100% - 60px);
  padding:10px 5px;
}
.tabs .tab-body > div {
  position:absolute;
  top:-200%;
  opacity:0;
  transform:scale(0.9);
  transition:opacity 500ms ease-in-out 0ms,
    transform 500ms ease-in-out 0ms;
}
.tabs .tab-body > div.active {
  top:0px;
  opacity:1;
  transform:scale(1);
} 
 <div class="tabs">
    <div class="tab-header">
        <div class="active">
                    <i class="fa fa-code"></i>Code
            </div>      
        <div>
                <i class="fa fa-pencil-square-o"></i>About
        </div>      
        <div>
                <i class="fa fa-bar-chart"></i>Services
        </div>      
        <div>
                <i class="fa fa-envelop-o"></i>Contact
        </div>          
    </div>      
    <div class="tab-indicator"></div>
    <div class="tab-body">
        <div class="active">
            <h2>This is code section</h2>
            <p>Test is all about fun</p>
        </div>
        <div>
            <h2>This is about section</h2>
            <p>Test is all about fun</p>
        </div>      
        <div>
            <h2>This is services section</h2>
            <p>Test is all about fun</p>
        </div>      
        <div>
            <h2>This is section</h2>
            <p>Test is all about fun</p>
        </div>
        </div>  
</div> 

Комментарии:

1. Спасибо, что показали бирку тела, и я добавил, как было указано. Но все равно ошибка кода java-скрипта сохраняется

2. Это не ошибка javascript. Это предупреждение от dreamweaver. Попробуйте <ссылка rel=»таблица стилей» href=»стили.css» />

3. Спасибо за ваш отзыв. Причина, по которой я думаю, что это ошибка javascript, заключается в том, что, как я показал в примере, невозможно перемещаться между вкладками КОДА, СВЕДЕНИЙ О программе, СЛУЖБ и КОНТАКТОВ в index.html страница (изображение, прикрепленное в вопросе).

4. community.adobe.com/t5/dreamweaver/… попробуй это

5. Если вы просматриваете страницу в браузере Chrome, затем щелкните правой кнопкой мыши проверить элемент, перейдите на вкладку консоль. Он покажет вам, какая ошибка у вас в коде javascript. Если бы в вашем js-коде были ошибки, то он не запустил бы фрагмент SO.