use*_*229 8 html javascript function
只是好奇,想了解一下。我可以向某些 html 标签添加 JavaScript 函数吗?例如,如果我有这样的 div 标签:
<div id="example">Hello!</div>
Run Code Online (Sandbox Code Playgroud)
并想要添加函数来提醒每个 div 内部的值,例如:
function divFunction(){
alert(/*some div content*/);
}
Run Code Online (Sandbox Code Playgroud)
所以,它可以像这样执行:
<div id="example">Hello!</div>
<script>
document.getElementById("example").divFunction();
</script>
Run Code Online (Sandbox Code Playgroud)
我的问题的重点是向某些标签添加一些新的属性或功能。就像如果有:
document.getElementById("example").innerHTML;
Run Code Online (Sandbox Code Playgroud)
是真的吗:
document.getElementById("example").newAttribute;
Run Code Online (Sandbox Code Playgroud)
是什么让我好奇,因为 jQuery 可以做这样的事情:
$( "#result" ).load( "ajax/test.html" );
Run Code Online (Sandbox Code Playgroud)
DOM 元素就像具有某些属性的 javascript 对象,因此您可以添加一个新属性,在您的情况下是一个新函数。
这是一个例子:
var element = document.querySelector('#example');
function bindToNode(node, name, fn) {
node[name] = fn.bind(node);
}
bindToNode(element, 'logValue', function() {
console.log(this.textContent);
});
element.logValue();Run Code Online (Sandbox Code Playgroud)
<div id="example">
Hello!
</div>Run Code Online (Sandbox Code Playgroud)
但是你不应该搞乱 DOM 元素,更好的方法是像 jQuery 那样包装元素。
这是不可能的,因为 $ (jQuery) 和 document 是在内置函数中定义的对象。
因为当你使用时.你调用的是一个对象成员。
Foo.bar()- 调用内部bar()定义的函数和 object 。Foo
所以你必须创建你的类/选择器。
这是一个简单的例子:
class select {
constructor(selector) {
this._element = document.getElementById(selector);
}
// Functions
colorMe() {
this._element.style.backgroundColor = "red";
}
moveMe(x) {
this._element.style.marginTop = x;
}
}
var elem = new select("example");
elem.colorMe();
elem.moveMe("50px");Run Code Online (Sandbox Code Playgroud)
<div id="example">
This is an example
</div>Run Code Online (Sandbox Code Playgroud)