添加onclick失败

Javascript add onclick unsuccessful

本文关键字:失败 onclick 添加      更新时间:2023-09-26

My Script:

function $(attr){
    if(attr.charAt(0) == "#"){
        return document.getElementById(attr.substr(1));
    }else{
        if(attr.charAt(0) == "."){
            return document.getElementsByClassName(attr.substr(1));
        }else{
            return document.getElementsByTagName(attr);
        }
    }
}
Object.prototype.onclick = function(script){
    this.onclick = script;
}
$("#hi").onclick(function(){alert("hi");});

在html中它只是一个id为hi的标签。

当我点击按钮时,什么也没发生。我该怎么办?

扩展Object是不好的做法,我不推荐它。同样,在现代浏览器中,您想要做的事情相当容易,您可以使用querySelectorAll,并使用addEventListener:

添加事件
// An IIFE (Immediately Invoked Function Expression)
var $ = (function() {
  // Constructor
  function $(selector) {
    // querySelectorAll returns a pseudo-array
    this.el = toArray(document.querySelectorAll(selector));
  }
  // Get elements as array or an element by index
  $.prototype.get = function(i) {
    return i == null ? this.el : this.el[i];
  };
  // Public method to add any event
  $.prototype.on = function(event, f) {
    this.el.forEach(function(el) {
      el.addEventListener(event, f);
    });
    // chain
    return this;
  };
  // shortcut for click event
  $.prototype.click = function(f) {
    return this.on('click', f);
  };
  // Coverts pseudo-arrays to real arrays
  function toArray(x) {
    return Array.prototype.slice.call(x);
  }
  // Wrapper to create instances
  // without using the "new" keyword
  return function(x) {
    return new $(x);
  }
}());
$('#hi').click(function(){alert('hi')});

小提琴

$("#hi").onclick=function(){alert("hi");}

你可以不加修饰

<script type="text/javascript"> 
function $(attr){
    if(attr.charAt(0) == "#"){
        return document.getElementById(attr.substr(1));
    }else{
        if(attr.charAt(0) == "."){
            return document.getElementsByClassName(attr.substr(1));
        }else{
            return document.getElementsByTagName(attr);
        }
    }
}
$("#hi").onclick = function(){alert("hi");};
</script>

这里有一个jsfiddlehttp://jsfiddle.net/Icepickle/29NYx/

我的朋友在浏览器加载页面后使用Inspect Element检查ID

我猜你正在使用ASP。. NET与MasterPage和#hi元素在contentPlaceHolder中。如果我的猜测是正确的,那么你的元素#hi必须改变为ContentPlaceHolder1_hi。因此,请根据此更改您的脚本。

$('#ContentPlaceHolder1_hi').click(function(){alert('hi')});