Кнопка JavaScript со ссылкой

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

var button = document.createElement("button");
button.innerHTML = "$1.00";

divInnerElement.appendChild(button);

button.addEventListener ("click", function() {
  window.location('http://www.google.com','_blank');
  return false;
});  

Обновление: функция работает, но только перезагружает текущую страницу, а не перенаправляет вас на другую страницу. Если я использую window.open, он работает, но я не хочу, чтобы он открывал новое окно.

Обновлять:

Поэтому я не уверен, что вызвало щелчок при использовании window.location, но я смог добавить тег тега к кнопке, и это решило проблему.

<script>
var button = document.createElement("button");
var aTag = document.createElement('a');
aTag.setAttribute('href','http://www.google.com');
aTag.innerHTML = '$1.00';
button.appendChild(aTag);
divInnerElement.appendChild(button);

// button.addEventListener ("click", function() {
//   window.location.href = 'http://www.google.com';
// return false;
// });  
</script>

Что не работает? Что ты пробовал? Пожалуйста, включите эту информацию в свой пост.

jhpratt 15.10.2018 22:03

Расскажите, пожалуйста, подробнее о том, что не работает? ГДЕ пытаетесь открыть? Это всплывающее заблокированное окно? У вас есть ошибки в консоли? Пожалуйста, предоставьте более подробную информацию.

CRayen 15.10.2018 22:12

Я чувствую, что мне нужно добавить больше контекста. Функция работает, но только перезагружает текущую страницу, а не перенаправляет вас на другую страницу. Если я использую window.open, он работает, но я не хочу, чтобы он открывал новое окно.

Ellen Harris 15.10.2018 22:29
window.location не является функцией, вы должны получить сообщение об ошибке в этой строке.
Barmar 15.10.2018 23:38
Поведение ключевого слова "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
4
71
5

Ответы 5

Прежде всего, это против доступности и своего рода обмана для пользователя на основе элементов html, используемых на странице для их функциональности. В вашем случае, если пользователь переходит на другую страницу, он должен быть создан как элемент привязки вместо кнопки IMO. Если вам нужен вид кнопки, просто используйте CSS, чтобы оформить ее соответствующим образом.

Это не ответ. В лучшем случае это должен быть комментарий (и у вас есть много репутации для этого). Доступность не имеет ничего общего с вопросом ОП.

David Makogon 16.10.2018 22:04

Перед тем, как проголосовать против, проверьте, нет ли в добавленной информации вводящей в заблуждение информации. Я упомянул очень простое правило: если его не соблюдать, доступность нарушается. К вопросу, почему это должно быть реализовано таким образом, не добавляется никакого контекста. Если в случае, если такого требования нет, он вполне может перейти к основному без каких-либо осложнений - это то, что я пытаюсь сказать всем, кто просматривает этот ответ.

JK4599 17.10.2018 23:09

Ваш вопрос очень расплывчатый, вот рабочий код - надеюсь, это то, что вам нужно

HTML:

<div id = "divInnerElement"></div>

Javascript:

var button = document.createElement("button");
button.innerHTML = "$1.00";

document.getElementById('divInnerElement').appendChild(button);

button.addEventListener ("click", function() {
  window.open('http://www.google.com','_blank');
  return false;
});  

Я использовал window.open: поскольку вы вставили исходный фрагмент _blank, я предполагаю, что вы хотите открыть ссылку в новой вкладке.

Она добавила комментарий, в котором говорится, что он не хочет открывать новое окно / вкладку.

Barmar 15.10.2018 23:39

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

Если бы сценарий выполнялся до загрузки страницы, она не увидела бы добавляемую им кнопку.

Barmar 15.10.2018 23:39

Этот фрагмент кода должен быть внизу страницы и удалить оператор return из кода, чтобы страница открывалась в новой вкладке.

 var button = document.createElement("button");
 button.innerHTML = "$1.00";

 document.getElementById('divInnerElement').appendChild(button);

 button.addEventListener ("click", function() {
  window.open('http://www.google.com','_blank');

 }); 

Поэтому я не уверен, что вызвало щелчок при использовании window.location, но я смог добавить тег тега к кнопке, и это решило проблему.

<script>
    var button = document.createElement("button");
    var aTag = document.createElement('a');
    aTag.setAttribute('href','http://www.google.com');
    aTag.innerHTML = '$1.00';
    button.appendChild(aTag);
    divInnerElement.appendChild(button);

    // button.addEventListener ("click", function() {
    //   window.location.href = 'http://www.google.com';
    // return false;
    // });  
    </script>

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