javascript - 无法设置未定义的属性 'borderColor'

标签 javascript html

我是从一本书上复制这个的(..所以它“应该”工作),我无法让这个功能工作,它可能是重复的,但我搜索了一个答案但无法让它工作。

"Uncaught TypeError: Cannot set property 'borderColor' of undefined"

它可能很简单,但我认为 to 是我尝试将其设置为数组和对象的问题,但我真的不明白,任何具有简单解释的解决方案将不胜感激。

function changeBorder(element, to){
    element.style.borderColor = to;
}
    
var contentDiv = document.getElementById('color');

contentDiv.onmouseover = function(){
    changeBorder('red');
};
    
contentDiv.onmouseout = function(){
    changeBorder('black');
};
.box{
  border: 1px solid red;
  background-color:pink;
  padding: 10px;
}
    
.row {
    border: 1px solid #000;
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html/js; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>

<div class="row" id="color">
  <div class="element">1</div>
</div>

</body>     
</html>

我只想删除错误消息并让函数执行某些操作。

最佳答案

您需要像这样设置this 并更改您的函数:

contentDiv.onmouseover = function(){
    changeBorder(this, 'red');
};

contentDiv.onmouseout = function(){
    changeBorder(this, 'black');
};

如果没有关键字this,它就不会被发现。请记住,在您的函数中您正在共享元素:

function changeBorder(element, to){
    element.style.borderColor = to;
}

关于javascript - 无法设置未定义的属性 'borderColor',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48164504/

相关文章:

javascript - 如何检查(动态)选中哪个单选按钮?

javascript - 在 chart.js 图形上叠加线

javascript - 在 Chrome 开发者控制台中加载页面后,window.onload 不起作用

python - 如何在 Django 中重复调用views.py 中的函数?

javascript - 如何为所有包含文本的元素添加特定的 CSS 属性

javascript - 如何更改自动完成中的结果过滤器?

javascript - 当其他工作正常时 document.getElementById 返回 null

html - 可访问性 - 单选按钮的标签属性

java - HTML5 模式下的 AngularJS + Java

javascript - 当我需要为每个元素使用不同的 id 时,如何通过仅加载一次来多次使用相同的图像