После нажатия кнопки / отправки формы таблица стилей CSS не отображается - PullRequest
0 голосов
/ 17 июня 2020

После нажатия кнопки использования источники, когда я проверяю страницу, показывают, что страница style. css исчезает, и никакие стили не применяются. Я не могу понять, почему это происходит.

Моя страница index. html выглядит так:

<!DOCTYPE html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
        <meta name="description" content="">
        <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500&family=Roboto:wght@100;300;400;700&display=swap" rel="stylesheet">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="style.css">
    </head>
    <body>

        <input type="text" placeholder="First name" class="fname">
        <input type="submit" value="Use" class="submit">


        <script src="app.js"></script>
    </body>
</html>

А мое приложение. js это:


const useBtn = document.querySelector('.submit');
const reloadBtn = document.querySelector('.btn__reload')

document.body.style.fontFamily = "Roboto;"

useBtn.addEventListener('click', function(){
    let person = document.querySelector('.fname').value;
    document.write(`<h2>It's ${person}'s turn!</h2>`)
    document.write(`<h4>How long will they live?</h4>`)
    let oldAge = `<p>${Math.floor((Math.random() * 10)+ 30)}</p>`
    document.write(oldAge)
    document.write(`<h4>What will be their yearly salary?</h4>`)
    let salary = `<p>${Math.floor(Math.random() * 10000)}</p>`
    document.write(salary)
    document.write(`<h4>What will be their career</h4>`)
    const jobs = [ 'plumber', 'doctor', 'witch', 'president', 'trump supporter']
    let job =  Math.floor(Math.random() * jobs.length)
    document.write(jobs[job])
    redoBtn();

})

function redoBtn(){
    let tryAgain = document.createElement('button')
    document.body.appendChild(tryAgain)
    let buttonText = document.createTextNode('Try Again')
    tryAgain.appendChild(buttonText)
    tryAgain.addEventListener('click', function(){
        window.location.href = window.location.href;
    })
}

Любая помощь приветствуется!

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Ваш document.write перезаписывает все ваши html, включая связанную таблицу стилей.

From https://developer.mozilla.org/en-US/docs/Web/API/Document/write:

Примечание: как документ .write записывает в поток документов, вызывая document.write для закрытого (загруженного) документа, автоматически вызывает document.open, который очищает документ.

Если вы действительно хотите использовать document.write, вам нужно будет переписать ссылку на вашу таблицу стилей в новый документ. Но может быть лучше просто заменить html некоторого элемента контейнера на вашей странице, например, элемента body.

0 голосов
/ 17 июня 2020

Вместо использования document.write, который перезаписывает ваш html, вы можете попробовать следующий подход:

    <input type="submit" value="Use" class="submit">

    <!-- add new div to show the result -->
    <div id="result"></div>

    <script src="app.js"></script>

И в событии щелчка:

useBtn.addEventListener('click', function(){
    let person = document.querySelector('.fname').value;
    let res = document.getElementById('result');

    res.innerHTML = "<h2>It's "+person+"'s turn!</h2>";
    // add further information to innerHTML here
    // hide input fname and submit button

    redoBtn();

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...