开发者问题收集

我该如何修复此错误:“未捕获的类型错误:无法在“MyClassName”处设置未定义的属性‘borderBottom’”?[重复]

2019-08-23
1610

我想在有人点击按钮时更改按钮的样式,我尝试使用我在 JavaScript 文件中编写的函数来执行此操作,但它不起作用并出现此错误:“未捕获的 TypeError:无法在 SignUp_Click 中设置未定义的属性‘borderBottom’”。

function SignUp_Click() {
    document.getElementsByClassName("Sign_up").style.borderBottom = "12px solid #c00000";
}
.Sign_up {
    float: right;
    height: 93px;
    width: 115px;
    border-left: 1px solid #d1d5dc;
}

    .Sign_up input[type=button] {
        border: none;
        direction: rtl;
        font-size: 16pt;
        color: #262626;
        background: url('images/sign_up.png') right center no-repeat;
        padding: 5px 25px 5px 5px;
        margin: 30px 15px 0 0;
        cursor: pointer;
    }
<div class="Sign_up"> <input type="button" value="Sign up" onmousedown="SignUp_Click()"/> </div>
3个回答

document.getElementsByClassName 返回 HTMLCollection,而不是单个元素。

因此,您应该使用类似的方法来选择集合中的第一个元素:

document.getElementsByClassName("Sign_up")[0].style.borderBottom = "12px solid #c00000";

或者使用 document.querySelector

document.querySelector(".Sign_up").style.borderBottom = "12px solid #c00000";

它返回第一个匹配的元素。

Kyryl Stronko
2019-08-23

document.getElementsByClassName 返回具有指定类的所有元素的 HTML 集合,而不仅仅是一个元素,使用 document.querySelector('.Sign_up') 获取具有类 Sign_up 的第一个元素,或索引 document.getElementsByClassName 返回的集合:

function SignUp_Click() {
  // or document.querySelector('.Sign_up') but without [0]
  document.getElementsByClassName("Sign_up")[0].style.borderBottom = "12px solid #c00000";
}
.Sign_up {
  float: right;
  height: 93px;
  width: 115px;
  border-left: 1px solid #d1d5dc;
}

.Sign_up input[type=button] {
  border: none;
  direction: rtl;
  font-size: 16pt;
  color: #262626;
  background: url('images/sign_up.png') right center no-repeat;
  padding: 5px 25px 5px 5px;
  margin: 30px 15px 0 0;
  cursor: pointer;
}
<div class="Sign_up"> <input type="button" value="Sign up" onmousedown="SignUp_Click()" /> </div>
Djaouad
2019-08-23

我认为问题出在您选择按钮的方式上。我也会考虑给它一个 ID 并以此方式选择它!(getElement s ByClassname 返回一个集合!)

function SignUp_Click() {
    document.querySelector(".Sign_up").style.borderBottom = "12px solid #c00000";
}
.Sign_up {
    float: right;
    height: 93px;
    width: 115px;
    border-left: 1px solid #d1d5dc;
}

    .Sign_up input[type=button] {
        border: none;
        direction: rtl;
        font-size: 16pt;
        color: #262626;
        background: url('images/sign_up.png') right center no-repeat;
        padding: 5px 25px 5px 5px;
        margin: 30px 15px 0 0;
        cursor: pointer;
    }
<div class="Sign_up"> <input type="button" value="Sign up" onmousedown="SignUp_Click()"/> </div>
Brady Ward
2019-08-23