Вложенные проблемы ввода - PullRequest
0 голосов
/ 03 апреля 2020

почему поверх моего текста появляется "undefined"

function myname() {
    document.write('Im john doe ');
}

function myage() {
    myname();
    document.write('Im 47 years old');
}
document.querySelector('.test').innerHTML=myage();

JSBin вот полный код

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Когда браузер обрабатывает документ HTML и встречает тег, его необходимо выполнить перед продолжением построения DOM. Поскольку вы пытаетесь получить доступ к document.querySelector ('. Test'), который в данный момент недоступен, он выдал неопределенное значение. Посмотрите на приведенный ниже код, где скрипт выполняется без неопределенности после загрузки dom.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="test"></div>
</body>
<script>
    function myname(){
        document.write('Im john doe ')
    }
    function myage(){
        myname();
        document.write('Im 47 years old')
       
    }
  document.addEventListener("DOMContentLoaded", () => {
   document.querySelector('.test').innerHTML=myage()
  });
  
  
    
</script>
</html>
0 голосов
/ 03 апреля 2020
function myage(){
        myname();
        document.write('Im 47 years old')

    }
    document.querySelector('.test').innerHTML=myage()

При этом, когда Вы звоните myage(), он ничего не возвращает. Таким образом, внутренняя Html для выбранной цели ничего не получает.

Это причина, почему она показывает Undefined.

...