Я пытался написать код, имитирующий этот пример (код ниже).
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>Кто-нибудь может дать мне какой-нибудь совет?
Я понимаю. На этом сайте иногда появляется модный плохой английский от подростков, которые могут хорошо писать, но не умеют писать. Они пишут так, как если бы вопрос Stackoverflow был SMS-сообщением их незрелым друзьям. Это не было твоим намерением. Отредактирую ваш пост под стандартный английский стиль.
@thb Большое спасибо за ваше редактирование, чтобы больше людей поняли и получили пользу от этого сообщения.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


При настройке отображения на блокировку добавьте кавычки вокруг слова "блок".
function open(){
x=document.getElementById("demo");
x.style.display = "block";
}
Привет BMac413, спасибо за комментарий! поэтому я просто отредактировал, чтобы добавить кавычки в свой код, и, похоже, он все еще не работает, я думаю, я сделал еще несколько ошибок ...
@SimonF измените имя вашего метода на другое с open & close. например: openFunc (), closeFunc ()
@devdev Сработало! и благодаря вашим комментариям я проверил и обнаружил, что это «зарезервированные слова». Большое спасибо
devedv прав. open и close - существующие функции оконного объекта.
Итак, все эти функции находятся в области видимости окна, поэтому я назвал имя 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 Я добавил ответ сюда отдельно, чтобы он мог помочь другим.
Имена ваших функций уже используются. Сохранение вашего кода неизменным, за исключением имен функций, которые вы можете протестировать, все работает должным образом.
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";
}
Этот код не решит проблему. заглавные буквы в функциях не помогут.
open () и close () - зарезервированные ключевые слова. Измените имя функции, например openOne () и closeOne (), и все заработает.
извините, английский для меня второй язык, и я очень стараюсь его освоить ... но все же спасибо за ваши комментарии! ;)