uncaught определить ошибку какие-либо решения для этого?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Speed typing game</title>
    <script src="speed.js" defer></script>
    <link rel="stylesheet" href="speed.css">
</head>
<body>
    <input type="button" value="Start game!" class="button">
    <div class="letter">A</div>
    <div></div>

</body>
</html>

как я могу решить эту ошибку, она находится в строке 59, так что вы знаете, где она, я должен дать значение букве, которую я пробовал, но это не сработало? speed.js:59 Uncaught TypeError: Невозможно установить свойство 'top' из неопределенного на speed.js:59 ```let max=10 var letter= 'A' let color=purple let right='right' var top='top ' var startbutton=document.querySelector('input[type=button]')

        startbutton.addEventListener("click",startgame)
// start the game with a random number,hide the button//
        function startgame() {
            
            startbutton.classList.add("hidden")
            let interval = 1000
            setInterval(createNewLetter,interval);
}
/*generate random number between 1-8 */
function randomNumber(min,max) {
 return Math.floor(Math.random() * ( max+ 1))
}
// generate a random letter //
function randomLetter() {
 //generam un cod Ascii intre 65('A') si 90('Z') //
        let codeofA= "A".charCodeAt(0);
 let codeofZ= "Z".charCodeAt(0)       
 let randomCode= randomNumber(codeofA, codeofZ);
        // convertim codul ascii in caracterul asociat lui //
        return String.fromCharCode(randomCode)

}

// genereaza o culoare aleatorie //
 function randomColor() {
         let red = randomNumber(0,255)
         let green = randomNumber(0,255)
         let blue= randomNumber(0,255)
         return 'rgb(${red},${green},${blue})'
 }
 // genereaza o pozitie aleatorie intre 0% si 90% //
 function randomPosition() {
         let position = randomNumber(0,90)
         return '${position}%'
 }
 // creaza un nou element div cu o litera aleatorie //
 // adaugarea elementului in html//
 function createNewLetter() {
         let letter = randomLetter()
         let color= randomColor()
         let top = randomPosition()
         let right= randomPosition()
 }
 // cream un nou element div //
 let div = document.createElement("div")
 // adaugam o clasa letter //
 div.classList.add("letter")
 //adaugam un nou stil si o noua culoare literei //
 div.style.backgroundColor = randomColor
 // adaugam o pozitie literei //
 div.Style.top = top
 // pozitionam litera //
 div.Style.right = right
// cream un element body // 
 document.querySelector("body").appendChild(div)

person Claudiu Piturca    schedule 12.02.2021    source источник


Ответы (1)


Обновление:

Необходимо заменить

div.classlist.add("letter")

с

div.classList.add("letter")

Ошибка говорит о том, что любой элемент, к которому вы пытаетесь добавить в строке 54, не определен.

Глядя на ваш код, это либо startbutton, либо div, это единственные элементы, с которыми связано добавление.

Можете ли вы опубликовать полный файл, чтобы мы могли видеть, что находится в строке номер 54?

person Nick Mullen    schedule 12.02.2021
comment
я делаю это с imgur или? - person Claudiu Piturca; 12.02.2021
comment
Вы можете просто опубликовать его в комментарии или отредактировать описание, включив в него полный код Javascript. Если вы заметили, ваше форматирование неверно для приведенного выше фрагмента кода. Попробуйте отредактировать это форматирование, чтобы весь код был правильно отформатирован и включал весь файл, чтобы мы могли точно видеть, что находится в каждой строке. - person Nick Mullen; 12.02.2021
comment
udrop.com/4Vxy/speed.js поможет ли это? - person Claudiu Piturca; 12.02.2021
comment
Похоже, у вас есть div.classlist вместо div.classList (обратите внимание, что L пишется с большой буквы) div.classlist.add(letter) должен быть: div.classList.add(letter) - person Nick Mullen; 12.02.2021
comment
Еще одна проблема, с которой вы столкнетесь после исправления, заключается в том, что цвет не определен, потому что ваша переменная цвета объявлена ​​в функции createNewLetter(), но вы пытаетесь получить к ней доступ вне функции. - person Nick Mullen; 12.02.2021
comment
Uncaught TypeError: Невозможно установить свойство 'top' из undefined на скорости.js: 56, которое сработало, но теперь я получаю эту ошибку, как решить эту проблему? - person Claudiu Piturca; 12.02.2021
comment
Это та же проблема, что и с цветом, вы пытаетесь получить доступ к переменным вне области видимости. Переменные, к которым вы пытаетесь получить доступ, объявлены в функции createNewLetter, но недоступны вне этой функции. - person Nick Mullen; 12.02.2021
comment
так что я должен дать значение им всем? - person Claudiu Piturca; 12.02.2021
comment
Да. Вы не можете вызывать переменные, объявленные внутри функции, вне этой функции. - person Nick Mullen; 12.02.2021
comment
да, но проблема в том, что я получаю еще одну ошибку после того, как указываю значение, так что у вас есть лучшее решение, чтобы программа работала? - person Claudiu Piturca; 12.02.2021
comment
Послушайте, я рад помочь вам отладить ваш код, но вам нужно потратить хотя бы несколько минут, чтобы попытаться понять, что может быть причиной ошибки, вместо того, чтобы просить людей помочь вам. Попробуй разобраться хотя бы 10-15 минут, потом, если ты все еще застрял, выкладывай обновленный код, а я посмотрю. - person Nick Mullen; 12.02.2021
comment
хм, кажется, я застрял, поэтому я обновил код, я попытался присвоить значение top, но это не работает, и попытался вместо этого поставить randomPosition, но все равно то же самое, как мне заставить программу работать? - person Claudiu Piturca; 12.02.2021
comment
Слушай, ты недостаточно стараешься, прежде чем задавать вопросы. Я перестану отвечать, если вы продолжите задавать вопросы, не пытаясь разобраться в этом самостоятельно. Я вошел и добавил randomPosition вот так div.style.top = randomPosition(); и это работает. Таким образом, вы, очевидно, не очень пытаетесь устранить неполадки. Я здесь, чтобы помочь вам не писать программу для вас. Пожалуйста, кстати. - person Nick Mullen; 12.02.2021
comment
на самом деле я в основном не понимаю, что буква не появляется, но спасибо, и, как вы можете видеть, я плохо разбираюсь в отладке - person Claudiu Piturca; 12.02.2021
comment
Если функция работает, но ничего не отображается, вероятно, есть другие проблемы. Попробуйте использовать свою консоль, используйте console.log() для записи элементов в консоль, чтобы увидеть, что Javascript видит для переменных и вызовов. Используйте свой инспектор для проверки тегов и идентификаторов элементов HTML. Вот некоторые вещи, которые помогут вам отладить. - person Nick Mullen; 12.02.2021
comment
с вашей стороны это что-то делает, когда вы нажимаете кнопку startgame?, я пытался выполнить console.log(letter), но, похоже, я получаю неопределенный результат - person Claudiu Piturca; 12.02.2021
comment
У меня нет кнопки, потому что вы предоставили мне только JS, а не HTML. Я думаю, что дополнительные проблемы, с которыми вы сталкиваетесь, будут в рамках нового вопроса. - person Nick Mullen; 12.02.2021
comment
фрагмент добавлен, вы можете проверить его сейчас? - person Claudiu Piturca; 12.02.2021