Длина строки элемента html

Я подписался на https://www.w3resource.com/javascript-exercisions/javascript-basic-exercisions.php и застрял на упражнении 5:

  1. Напишите программу на JavaScript, которая будет вращать строку «w3resource» в правильном направлении. Это делается путем периодического удаления одной буквы с конца струны и прикрепления ее к передней части.

моей первой мыслью было создать переменную и использовать селектор запросов, чтобы получить мой контент внутри моего H1, теперь я ищу способ изменить эту строку. Я знаю, что в JS строки неизменяемы, поэтому моя идея основана на использовании для этого другой переменной, пока я не думал, что все в порядке, но я застрял в том, как получить необходимый индекс для текста внутри моего элемента H1, и это просто дает мне неправильную длину, я не знаю почему. Я уже прочитал много контента по JS на веб-сайте MDN, но не смог найти ничего, что могло бы мне помочь.

let MyString = document.querySelector(".rotate_h1_content");

let output = document.querySelector(".output");

output.textContent = MyString.childNodes[0].length;
body{
    background-color: black;
}

h1{
margin: 0px;
padding: 0px;

}
.rotate_h1_content, .rotate_content{
    margin: 0px;
    padding: 0px;
}
.outer_content{
    display: block;
    width: 100%;
    height: 200px;
    margin-top: 200px;
    margin-left: 0px;
    margin-right: 0px;
    padding: 1px;
    text-align: center;
    color: white;
}
<!DOCTYPE html>
<html>
    <head>
        <meta name = "Training">
        <meta name = "author" content = "Vitor Mota">
        <title>Training</title><!--Practice-->
        <meta name = "viewport" content = "width=device-width, initial-scale=1.0">                       <!--Estou colocando em ingles, mas vou traduzindo nos comentarios-->
        <meta charset = "UTF-8">
        <link rel = "stylesheet" type = "text/css" href = "cssFile2.css">
        <script src = "JsExc2.js" defer></script>
    </head>
    <body >
        <div class = "outer_content">
            <div class = "rotate_content">
                <h1 class = "rotate_h1_content">
                   Any string
                </h1>
                <h2 class = "output">
                   
                </h2>
            </div>
        </div>
        
    </body>
</html>

Я попробовал использовать дочерние узлы и длину, чтобы проверить, имеет ли моя строка правильную длину, но просто получил это неудобное число 47, а мой первый символ находится в индексе 20, может ли кто-нибудь мне помочь? Я думал, что это могут быть отступы и поля, дающие эти дополнительные символы, но это не так.

Что означает «вращение строки»? Вы имеете в виду, что вам нужно повернуть элемент HTML или как изменить содержимое элемента HTML? Поскольку ни одна из этих «строок изменения» не является первой, это задача CSS, а вторая — это просто замена одной строки на другую. Прямо сейчас вы делаете последнее, устанавливая текст элемента равным длине строки внутри вашего h1. Кроме того, не забудьте показать только ту проблему, о которой вы спрашиваете: в вашем фрагменте гораздо больше CSS, чем должно быть, а ваш HTML содержит кучу <head> контента, который совершенно не нужен.

Mike 'Pomax' Kamermans 23.02.2024 18:41

мне нужно повернуть строку (любую) в html w3resource.com/javascript-exercisions/… упражнение 5: напишите программу на JavaScript для поворота строки «w3resource» в правильном направлении. Это делается путем периодического удаления одной буквы с конца строки и прикрепления ее к передней части.... Итак, я искал способ обработки строки внутри элемента html, такой же простой, как и в любом другом языке, но во-первых, он дает мне неправильную длину.

Sung-99 23.02.2024 18:43

Тогда, пожалуйста, отредактируйте свое сообщение, чтобы указать это, и включите это описание в свое сообщение, потому что это не обычное использование слова «поворот» (это «прокручивание» или даже «прокрутка» строки, а не «вращение» строки). ). В упражнении рассказывается, что вам следует делать: взять строку, разделить ее на «последнюю букву» и «все, что до последней буквы», а затем создать новую строку из этих двух частей.

Mike 'Pomax' Kamermans 23.02.2024 18:46

Извините, я использовал описание упражнения на веб-сайте.

Sung-99 23.02.2024 18:47

Найдите в Интернете и/или stackoverflow информацию о том, как разделить строку с помощью JavaScript (должно быть довольно легко найти, это встроенная функция). Прочитав несколько сообщений/страниц о том, как это сделать, и просмотрев приведенные в них примеры, вы сможете понять, как правильно выполнить это упражнение.

Mike 'Pomax' Kamermans 23.02.2024 18:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

«Длина» также учитывает все пробелы перед словом «Любой».

Если вы trim() уберете пробелы, вы получите правильное число.

Возможно, в этом случае вам не следует форматировать этот конкретный div в вашем коде — с ним будет проще работать так:

<h1 class = "rotate_h1_content">Any string</h1>

let MyString = document.querySelector(".rotate_h1_content");

let output = document.querySelector(".output");

output.textContent += MyString.textContent.trim().length;
body{
    background-color: black;
}

h1{
margin: 0px;
padding: 0px;

}
.rotate_h1_content, .rotate_content{
    margin: 0px;
    padding: 0px;
}
.outer_content{
    display: block;
    width: 100%;
    height: 200px;
    margin-top: 200px;
    margin-left: 0px;
    margin-right: 0px;
    padding: 1px;
    text-align: center;
    color: white;
}
<!DOCTYPE html>
<html>
    <head>
        <meta name = "Training">
        <meta name = "author" content = "Vitor Mota">
        <title>Training</title><!--Practice-->
        <meta name = "viewport" content = "width=device-width, initial-scale=1.0">                       <!--Estou colocando em ingles, mas vou traduzindo nos comentarios-->
        <meta charset = "UTF-8">
        <link rel = "stylesheet" type = "text/css" href = "cssFile2.css">
        <script src = "JsExc2.js" defer></script>
    </head>
    <body >
        <div class = "outer_content">
            <div class = "rotate_content">
                <h1 class = "rotate_h1_content">
                   Any string
                </h1>
                <h2 class = "output">
                   
                </h2>
            </div>
        </div>
        
    </body>
</html>

перед фактическим текстом в элементе html всегда будут другие пробелы?

Sung-99 23.02.2024 18:56

Нет, вы добавили эти пробелы, когда структурировали свой HTML, как вы это сделали - javascript подсчитывает все пробелы от полей в вашем HTML. Обратите внимание, что на веб-странице будет отображаться только один пробел (именно так работает HTML), но JavaScript захватит все ~ 40 пробелов. Таким образом, вы можете либо использовать .trim(), как я это делал, когда читали textContent в javascript, либо удалить лишние пробелы из HTML, как предложено в моем ответе.

cssyphus 23.02.2024 20:55
Ответ принят как подходящий

Вы можете сделать это с помощью строковых операций:

let p = document.getElementById("something");
current = p.innerText;
setInterval(function() {
    p.innerText = current = current.substring(1) + current[0];
}, 200);
<p id = "something">Any string</p>

вам не пришлось использовать здесь функцию обрезки(), чтобы избежать пробелов перед строкой, почему?

Sung-99 23.02.2024 19:16

@ Sung-99, потому что у меня не было белых символов до и после любой строки в моем p. Если этот ответ решил проблему, вы можете принять его как правильный ответ.

Lajos Arpad 23.02.2024 19:19

@Sung-99 Sung-99, вы можете обернуть обрезку() при первой инициализации тока вокруг p.innerText, если у вас могут быть пробелы, которые вам не нужны.

Lajos Arpad 23.02.2024 19:20

ТЕПЕРЬ я получил это, я просто добавляю Enter после моего div и после моего объявления h1, поэтому в нем 47 символов, спасибо.

Sung-99 23.02.2024 19:24

Я пытаюсь понять ваш ответ, хорошо, это правильно, но можете ли вы объяснить, почему вам приходится назначать два раза?

Sung-99 23.02.2024 19:55

@Sung-99 конечно. innerText — это особенная вещь в Javascript, потому что, когда вы меняете его значение, структура вашей веб-страницы обновляется. Когда ваша строка заканчивается пробелом, присвоение ее innerText может обрезать ее как ненужные пробелы (что и произошло, когда я это попробовал), и, следовательно, лучше иметь строку, которая не преобразует структуру HTML вперед и назад и из которой ваши предполагаемые пробелы не обрезаются, если вы не хотите, чтобы они были обрезаны.

Lajos Arpad 23.02.2024 20:14

Другие вопросы по теме