如何修复:TypeError: 'null'不是一个对象(计算'event.relatedTar
How to fix: TypeError: 'null' is not an object (evaluating 'event.relatedTarget.parentNode')
这是一个错误后,我上传了一个网站,我目前正在工作。
TypeError: 'null'不是一个对象(求值'event.relatedTarget.parentNode')
关于如何解决这个问题/我应该用什么来代替它,有什么想法吗?
在没有任何其他上下文的情况下,如果event.relatedTarget.parentNode
给你这个错误,那么这意味着event
或event.relatedTarget
是空的。
:
if (event && event.relatedTarget && event.relatedTarget.parentNode) {
// your code here
}
现在你应该如何处理event
或event.relatedTarget
为空的情况?我不知道,因为你没有提供足够的信息让别人知道你在做什么。
你可能需要做的是弄清楚为什么它有时(或可能一直)为空。
我遇到了同样的问题。我试着在https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Firstrongteps/A_firstrongplash上创建一个数字猜游戏。尽管我准确地输入了代码,但我一直得到TypeError: null不是至少两个代码的对象消息。当我认为它们被清除时,我会得到另一个TypeError: Number不是一个函数,并且在我的猜测答案中添加了末尾的零。我甚至会在字段输入焦点guessField.focus()上得到错误。但经过深入研究,我不仅发现这似乎是Safari浏览器的一个常见错误,而且我终于弄明白了。
我收到的所有错误消息都在函数checkGuess()中。尽管我在函数之前定义了变量,但它们并没有被定义或识别。最大的问题是围绕输入字段。最疯狂的是,当我第一次创建它时,它工作得很好,但在点击几下后,它就不工作了。
我所做的是为随机数重新定义变量,将其从全局移到词法环境中。它被更好地定义为与函数直接相关。游戏又开始运行了。这是原始代码:
<body>
<div class="game">
<h1>Number Guessing Game</h1>
<p>
We have selected a random number between 1 and 100. See if you can guess it in 10 turns or fewer. We'll tell you if your guess was too high or too low.
</p>
<label for="guessField">
Enter a guess: </label>
<input type="text" id="guessField" class="guessField" tabindex="1">
<input type="submit" value="Submit Guess" class="guessSubmit" tabeindex="2" onclick="checkGuess()">
<span class="resultParas">
<p class="guesses"></p>
<p class="lastResult"></p>
<p class="lowOrHi"></p>
</span>
</div>
</body>
<script>
var randomNumber = Math.floor(Math.random() * 100) + 1;
var guesses = document.querySelector('.guesses');
var lastResult = document.querySelector('.lastResult');
var lowOrHi = document.querySelector('.lowOrHi');
var guessSubmit = document.querySelector('.guessSubmit');
var guessField = document.querySelector('.guessField');
var guessCount = 1;
var resetButton;
guessField.focus();
function checkGuess() {
var userGuess = randomNumber(guessField.value);
if (guessCount === 1) {
guesses.textContent = 'Previous guesses: ';
}
guesses.textContent += userGuess + ' ';
if (userGuess === randomNumber) {
lastResult.textContent = 'Congratulations! You got it right!';
lastResult.style.backgroundColor = 'green';
lowOrHi.textContent = '';
setGameOver();
} else if (guessCount === 10) {
lastResult.textContent = '!!!GAME OVER!!!';
setGameOver();
} else {
lastResult.textContent = 'Wrong!';
lastResult.style.backgroundColor = 'red';
if(userGuess < randomNumber) {
lowOrHi.textContent = 'Last guess was too low!';
} else if(userGuess > randomNumber) {
lowOrHi.textContent = 'Last guess was too high!';
}
}
guessCount++;
guessField.value = '';
guessField.focus();
guessSubmit.addEventListener('click', checkGuess);
}
function setGameOver() {
guessField.disabled = true;
guessSubmit.disabled = true;
resetButton = document.createElement('button');
resetButton.textContent = 'Start new game';
document.body.appendChild(resetButton);
resetButton.addEventListener('click', resetGame);
}
function resetGame() {
guessCount = 1;
var resetParas = document.querySelectorAll('.resultParas p');
for (var i = 0 ; i < resetParas.length ; i++) {
resetParas[i].textContent = '';
}
resetButton.parentNode.removeChild(resetButton);
guessField.disabled = false;
guessSubmit.disabled = false;
guessField.value = '';
guessField.focus();
lastResult.style.backgroundColor = 'white';
randomNumber = Math.floor(Math.random() * 100) + 1;
}
</script>
我将checkGuest函数修改为:
var guesses = document.querySelector('.guesses');
var lastResult = document.querySelector('.lastResult');
var lowOrHi = document.querySelector('.lowOrHi');
var guessSubmit = document.querySelector('.guessSubmit');
var guessField = document.querySelector('.guessField');
var guessCount = 1;
var resetButton;
guessField.focus();
function checkGuess() {
var userGuess = guessField.value;
guessField.value = Number;
Number = Math.floor(Math.random() * 100) + 1;
if(guessCount === 1) {
guesses.textContent = 'Previous guesses: ';
}
guesses.textContent += userGuess + '';
if(userGuess === Number) {
lastResult.textContent = 'Congratulations! You got it right!';
lastResult.style.backgroundColor = 'green';
lowOrHi.textContent = '';
setGameOver();
} else if(guessCount === 10) {
lastResult.textContent = '!!!Game Over!!!';
setGameOver();
} else {
lastResult.textContent = 'Wrong!';
lastResult.style.backgroundColor = 'red';
if(userGuess < Number) {
lowOrHi.textContent = 'Last guess was too low!';
} else if(userGuess > Number) {
lowOrHi.textContent = 'Last guess was too high!';
}
}
guessCount++;
guessField.value = '';
guessField.focus();
guessSubmit.addEventListener('click', checkGuess);
}
- 根据元素和容器大小计算边距
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 使用D3.js计算带有字母间距的文本长度
- 使用CSS或JavaScript计算分页符的数量
- 可以't计算自定义谷歌地图的js
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- JavaScript计算帮助(乘以时间)
- 如何计算对象文字中的键
- JavaScript循环无法正确计算/显示结果
- 与域在同一台计算机上运行的NODEJS服务器的CORS错误
- 四舍五入JavaScript计算
- 计算HTML中的页数
- 使用jQuery计算数组中的对象以更改进度条
- 如何在jquery中使用实时计算求和值
- 计算多个项目的价格
- 计算CSS3缩放框在另一个框中的最高位置
- 如何计算二十面体的法线
- if(foo!==null)的计算结果为true,即使foo为null
- 在Angular中重新使用HTML端的计算文本
- 如何修复:TypeError: 'null'不是一个对象(计算'event.relatedTar