JavaScript, HTML, без JQuery - как добавить строку, содержащую ссылку в середине предложения?

Я новичок в JavaScript. Я пытаюсь добавить абзац в HTML (желательно с помощью DOM). Абзац должен содержать строку, предложение со ссылкой посередине. Абзац будет иметь разное содержание в зависимости от выбора пользователя и будет отображаться на веб-странице после нажатия кнопки. Часть моего кода, связанная с вопросом, вставленным ниже. Где ссылка будет «contactThem».

//Returns a correct text to be displayed in a hidden panel.
function displayText(result) {
    const fR = parseInt(result);
    const contactThem = "<a href='form.html'>form</a>";
    let toInclude = "";
    if (fR < 5) {
        toInclude = "Some text";
    } else {
        toInclude = "Different text" + contactThem + "more text.";
    }
    return toInclude;
}

//Displays hidden panel with contents
function showPanel(displayText) {
    const toShow = displayText;
    const square = document.getElementById("toBeDisplayed");
    while (square.hasChildNodes()) {
        square.removeChild(square.lastChild);
    }
    const yourM = document.createElement("h2");
    let yourMT = document.createTextNode("Title");
    const pp = document.createElement("p");
    let ppT = document.createTextNode(toShow);
    yourM.appendChild(yourMT);
    square.appendChild(yourM);
    pp.appendChild(ppT);
    square.appendChild(pp);
    square.style.visibility = "visible";
}

Я подозреваю, что мой подход может быть неправильным ... Я думал о том, чтобы создать 2 отдельных div и отображать их в зависимости от выбора пользователя, но я бы предпочел сделать это на JavaScript, если это возможно. Я понимаю, что добавлять ссылки в качестве переменных некорректно. Это временный держатель, пока я не найду решение.

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

Chris G 06.01.2019 17:33

извинения, я отредактировал свой пост и добавил вызов displayText.

shadow 06.01.2019 17:44

Звонка displayText по-прежнему нет. Я предполагаю, что вы хотите использовать что-то вроде pp.innerHTML = displayText(5);

Chris G 06.01.2019 18:54

извините, я такой идиот и новичок во всем этом :( Надеюсь, моя последняя правка исправила проблему.

shadow 06.01.2019 19:48

Звонка по-прежнему нет. У вас есть function showPanel(displayText), что означает, что теперь вы можете получить доступ к первому параметру, переданному вызову showPanel(...) с помощью displayText. Это фактически помешает вам вызвать имеющуюся у вас функцию displayText, поскольку теперь эта локальная переменная затеняет функцию. И текстовый узел не должен включать HTML. jsfiddle.net/khrismuc/nvpaLy0f

Chris G 06.01.2019 22:37

хм, я думаю, что все эти проблемы с вызовом функций возникли из-за того, что это всего лишь 2 функции из многих. У меня есть отдельная функция main (), которая запускает все остальные. Я только вставил 2 функции, с которыми у меня были проблемы. В моем коде я использую следующие параметры: функция displayResult (результат, факторы). В своей основной функции я называю это: var Factors = Factors (choices);

shadow 06.01.2019 23:30
Поведение ключевого слова "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) для оценки ваших знаний,...
0
6
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Всякий раз, когда вы хотите добавить HTML-элемент, такой как <a href = "http://my_url.com">, внутри существующего элемента, вы можете сделать это с помощью HTMLElement.innerHTML = "text that will be rendered" (в отличие от HTMLElement.innerText, который будет отображать все как есть).

В вашем случае это будет примерно так:

const contactThem = "<a href='form.html'>form</a>";
let el = document.createElement("p")
el.innerHTML = "Different text" + contactThem + "other text."

Пьер, спасибо тебе огромное, это идеальное решение для меня и такое простое. * изменить: опечатка

shadow 06.01.2019 17:55

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