Сохранить измененный HTML в переменную Javascript?

Если у меня есть HTML-код, например, с полем ввода внутри него, например:

<div><input type = "text" name = "search_word" value = ""></div>

И тогда посетитель сайта вводит что-то в него, например Машина, не отправляя поле или что-то еще, но поэтому текущий HTML-код выглядит так:

<div><input type = "text" name = "search_word" value = "Car"></div>

Могу ли я каким-то образом сохранить этот HTML-код в переменной Javascript со словом Car или чем-то еще, что введено в поле ввода? Суть в том, чтобы сохранить HTML-код таким, каким он выглядит на данный момент. Поле ввода было просто примером.

Дело в том, что посетитель может перейти на другую вкладку в этом разделе сайта, а потом вернуться на эту вкладку. Моя идея состоит в том, что HTML будет получен из переменной Javascript.

Я заметил, что он не работает только с $('.search-form').html(). Это просто сохранит исходную версию HTML.

Я понимаю, что можно просто оставить HTML в коде со «скрытым» правилом стиля или чем-то еще. Но в основном я хотел бы сохранить его как переменную Javascript по соображениям производительности.

Когда вы говорите, что они переходят на другую вкладку, вы имеете в виду, что они загружают новую страницу? Если они это сделают, ваши переменные javascript будут потеряны навсегда...

Matthew Page 26.01.2019 06:22

@MatthewPage Нет, я сейчас создаю навигацию на основе Javascript. Они могут переключаться между вкладками, не покидая страницы. В этом весь смысл.

Peter Westerlund 26.01.2019 06:30

внешний html не работает?

Hasan alattar 26.01.2019 06:48

@Hasanalattar Имеет ли эта функция какие-либо функции, отличные от просто html (), кроме того, что она также содержит внешнее поле?

Peter Westerlund 26.01.2019 06:52

Если я понимаю ваш вопрос, вы хотите зафиксировать «текущее» состояние элемента html с любыми изменениями атрибутов (а не только со значением). Я не знаю простого способа сделать это во всех браузерах, поскольку большинство браузеров извлекают только html, который был отправлен как часть исходного запроса (а не текущее состояние этих элементов), когда вы используете innerHTML, outerHTML или jQuery html().

benvc 26.01.2019 06:54

@peter westeelund я читал это .. stackoverflow.com/a/46943719/4410536 так что я подумал, может быть, это сработает

Hasan alattar 26.01.2019 07:02

@benvc Но разве нельзя хотя бы привязать действие сохранения к коду, который был изменен с помощью on.click-events. Возможно, это не сработает с типом ввода. Но с кодом внутри этого блока кода, который изменен jQuery. Но я даже не могу заставить это работать.

Peter Westerlund 26.01.2019 07:07

Вы можете перебрать все атрибуты элемента и их значения, чтобы создать и сохранить объект, представляющий текущее состояние элемента, но у меня нет хороших идей для простого способа хранения только тех значений атрибутов, которые изменились. См. Получить все атрибуты элемента с помощью jQuery

benvc 26.01.2019 07:27
Поведение ключевого слова "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
8
1 331
2

Ответы 2

Вы можете попробовать использовать веб-хранилище, взгляните на эту ссылку Веб-хранилище (W3Schools)

Вы можете сохранить данные в браузере и использовать их позже.

Чтобы сэкономить на повторении кода, вы можете сделать что-то вроде этого

<input type = "text" name = "product" onchange = "TextChanged(this.name, this.value)">
<input type = "text" name = "product1" onchange = "TextChanged(this.name, this.value)">
<input type = "text" name = "product2" onchange = "TextChanged(this.name, this.value)">

<script type = "text/javascript">
  TextChanged = (name, value) =>
  {
      if (localStorage[name] == null)
      {
          //if the item doesn't exist, create it
          localStorage.setItem(name, value);
      }
      else
      {
          //else modify it
          localStorage[name] = value;
      }
  }
</script>

Но тогда я должен пройти все в HTML-коде, который можно изменить, и хранить все отдельно?

Peter Westerlund 26.01.2019 06:32

Как я сказал в вопросе. Поле ввода является просто примером. Это может быть что угодно. Элемент div внутри кода, который виден или скрыт, или что-то в этом роде.

Peter Westerlund 26.01.2019 06:45

возможно, вызывая функцию onchange для каждого метода и передавая значение и имя, а затем просто сохраняйте эти данные в объекте.

user10221193 26.01.2019 06:56

Я отредактировал свой ответ, чтобы дать приблизительное представление об одном из возможных способов сделать это.

user10221193 26.01.2019 07:11
<input type = "text" id = "user-input" oninput = "captureInput()">

<p id = "user-output"></p>

<script>
function captureInput() {

var userInput = document.getElementById("user-input").value;
var elOutput = document.getElementById("user-output");
elOutput.innerHTML = "User Input: " + userInput;
var userOutput = elOutput.innerHTML;    
}
</script>

Вы должны увидеть, что ввел пользователь, под полем ввода. И сохраняется в переменной userOutput. Надеюсь это поможет.

Nicole Essex 26.01.2019 07:47

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