Onclick事件无法识别功能

时间:2019-03-26 08:08:11

标签: javascript events

使用Javascript。当触发按钮的onclick时(通过按按钮),我得到一个错误。错误是:

Uncaught TypeError: accept is not a function at HTMLInputElement.onclick

这是按钮(及其附近)的HTML:

<input type="button"  value="Accept Offer" onclick="accept()" />
<input type="button"  value="Cancel" onclick="cancelAccept()" />

Cancel按钮可以正常工作。

这是accept JS函数:

function accept() {
    //check that user logged in
    api.me()
    .then( (res) => {   //logged in, accept offer
        acceptOffer(res.user);
    }, (err) => {
        console.log("error:",err);
        alert("Authentication error. Please logout and in again");
        cancel();
    });
}

将javascript导入(?)在html页面顶部的head标签中。 api.me()是对库的调用。

4 个答案:

答案 0 :(得分:3)

看来accept这个名字引起了麻烦。参见this jsfiddle

重命名您的函数并将其放在全局范围内。

答案 1 :(得分:2)

请尝试更改函数的名称,因为JS可能会误解“ accept”(这是html属性)。

答案 2 :(得分:2)

用按钮标签替换输入 就像这个演示

// The XStream should be configured in such a way that a security solution is provided
@Bean
public Serializer serializer(XStream xStream) {
    return XStreamSerializer.builder().xStream(xStream).build();
}
function accept() {  
    //check that user logged in
    api.me()
    .then( (res) => {   //logged in, accept offer
        acceptOffer(res.user);
    }, (err) => {
        console.log("error:",err);
        alert("Authentication error. Please logout and in again");
        cancel();
    });
} 
 

答案 3 :(得分:0)

下面的示例将产生一条错误消息,提示接受不是函数。

function accept(){
  console.log("I accept");
  alert(document.getElementsByTagName("input")[0].accept);
}

function cancelAccept(){
   console.log("I cancel");
}

console.log(accept);
<input type="button"  value="Accept Offer" onclick="accept()"  accept="text/html,image/gif" />
<input type="button"  value="Cancel" onclick="cancelAccept()" />

发生的事情是,由于input元素具有一个accept属性,该属性为用户定义的函数accept()创建了冲突。

函数使用预先存在的propertySection共享名称

  

有时在上课时,您可能拥有一个属性和一个函数   同名。调用函数后,编译器认为   该功能不再存在。

来源:here