Кнопка onclick и все исчезает

Я пытался написать код, имитирующий этот пример (код ниже).

function closeMe(){

   		x=document.getElementById("demo");

   		x.style.display = "none";

	}

function openMe(){

   		x=document.getElementById("demo");

   		 x.style.display = "block";

	}
	<h1>Changing the Style</h1>
	<p>JavaScript can change the style of an HTML element.</p>

	<button type = "button" onclick = "openMe()">Open!</button>
	<button type = "button" onclick = "closeMe()">Close!</button>

	<p id = "demo">Extra details...You can open and close this paragraph using the buttons above.</p>

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

function open() {
  x = document.getElementById("demo");
  x.style.display = "block";
}

function close() {
  x = document.getElementById("demo");
  x.style.display = "none";
}
<p id = "demo">Click me to change my HTML content (innerHTML).</p>

<p> this shouldnt disappear</p>

<button onclick = "open()">open button</button>

<button onclick = "close()">close button</button>

Кто-нибудь может дать мне какой-нибудь совет?

извините, английский для меня второй язык, и я очень стараюсь его освоить ... но все же спасибо за ваши комментарии! ;)

Simon F 17.12.2018 14:12

Я понимаю. На этом сайте иногда появляется модный плохой английский от подростков, которые могут хорошо писать, но не умеют писать. Они пишут так, как если бы вопрос Stackoverflow был SMS-сообщением их незрелым друзьям. Это не было твоим намерением. Отредактирую ваш пост под стандартный английский стиль.

thb 17.12.2018 14:18

@thb Большое спасибо за ваше редактирование, чтобы больше людей поняли и получили пользу от этого сообщения.

Simon F 17.12.2018 14:33
Поведение ключевого слова "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) для оценки ваших знаний,...
2
3
1 443
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

При настройке отображения на блокировку добавьте кавычки вокруг слова "блок".

function open(){
    x=document.getElementById("demo");
    x.style.display = "block";
}

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

Simon F 17.12.2018 14:09

@SimonF измените имя вашего метода на другое с open & close. например: openFunc (), closeFunc ()

devedv 17.12.2018 14:12

@devdev Сработало! и благодаря вашим комментариям я проверил и обнаружил, что это «зарезервированные слова». Большое спасибо

Simon F 17.12.2018 14:17

devedv прав. open и close - существующие функции оконного объекта.

yunzen 17.12.2018 14:17

Итак, все эти функции находятся в области видимости окна, поэтому я назвал имя window.function. Я также объявил переменную в функции, поскольку она выдавала некоторые ошибки javascript.

Обычно это не требуется, но у меня такое ощущение, что jsfiddle использует "use strict"; что может вызвать такого рода различия. Однако я открыт для других предложений.

Надеюсь это поможет.

function open() { 
  var x = document.getElementById("demo");
  x.style.display = "block";
}

function close() {
  var x = document.getElementById("demo");
  x.style.display = "none";
}
<!DOCTYPE html>
<html>

<body>

  <p id = "demo">Click me to change my HTML content (innerHTML).</p>

  <p> this shouldnt disappear</p>

  <button onclick = "window.open();">open button</button>

  <button onclick = "window.close();">close button</button>
</body>

</html>

Ответ принят как подходящий

Открыть и закрыть - зарезервированные ключевые слова. Вам необходимо переименовать метод закрытия и открытия.

Метод open () открывает новое окно браузера.

Метод close () для закрытия окна.

@SimonF Я добавил ответ сюда отдельно, чтобы он мог помочь другим.

devedv 17.12.2018 14:27

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

  function open123(){
    let x=document.getElementById("demo");
    x.style.display = "block";
  }

  function close123(){
    let x=document.getElementById("demo");
    x.style.display = "none";
  }
<p id = "demo">Click me to change my HTML content (innerHTML).</p>

<p> this shouldnt disappear</p>

<button onclick = "open123()">open button</button>

<button onclick = "close123()">close button</button>

в функциях нужно использовать заглавные буквы, а стили должны заключаться в кавычки;

постарайтесь иметь чистый код :)

function Open(){
        x = document.getElementById("demo");
        x.style.display = "block";
    }

        function Close(){
        x = document.getElementById("demo");
        x.style.display = "none";
    }

Этот код не решит проблему. заглавные буквы в функциях не помогут.

NetVicious 17.12.2018 16:06

open () и close () - зарезервированные ключевые слова. Измените имя функции, например openOne () и closeOne (), и все заработает.

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