Javascript 用于动态创建的函数<;a>;标签不起作用
我正在使用html、js和css开发一个移动网站。我已经通过HTML5DOM创建了标签并为其分配了功能。它不起作用了 我的html代码(我通过DOM方法尝试过)Javascript 用于动态创建的函数<;a>;标签不起作用,javascript,html,dom,Javascript,Html,Dom,我正在使用html、js和css开发一个移动网站。我已经通过HTML5DOM创建了标签并为其分配了功能。它不起作用了 我的html代码(我通过DOM方法尝试过) var addExhibits=document.getElementById('mycontent'); 函数mytest() { var div=document.createElement('div'); div.id='rateMe'; var anchor=document.createElement('a'); ancho
var addExhibits=document.getElementById('mycontent');
函数mytest()
{
var div=document.createElement('div');
div.id='rateMe';
var anchor=document.createElement('a');
anchor.id=“_1”;
anchor.onclick=rateIt(本);
anchor.onmouseover=额定值(本);
anchor.onmouseout=off(这个);
儿童组(锚);
附录附录子项(div);
}
代码(静态创建的标记-工作正常)
)事件处理程序只需在此处分配相应函数调用的结果:
anchor.onclick = rateIt(this);
anchor.onmouseover=rating(this);
anchor.onmouseout=off(this);
我假设您希望在发生事件时执行它们:
var that = this;
anchor.onclick = function(){ rateIt(that); };
anchor.onmouseover = function(){ rating(that); };
anchor.onmouseout= function(){ off(that); };
您不会在任何地方调用mytest()函数。这是我看到的第一件事。另一件事是,您正在将脚本置于div(mycontent)之上,因此在读取脚本时尚未创建div。但是我不完全理解你的目标是什么,或者你的问题到底是什么。你不需要通过这个考试
您可以通过多种方式访问函数中的元素
var addExhibits=document.getElementById('mycontent'),
rateIt=function(e){
e=e||window.event;
var target=e.target||e.srcElement;//polyfill for older browser
console.log(this,target);
},
rating=function(e){
console.log(this,e.target);
},
off=function(e){
console.log(this,e.target);
},
mytest=function(){
var div=document.createElement('div'),
a=document.createElement('a');
div.id='rateMe';
a.id="_1"; // id's shouldn't contain _ - & numbers(1st letter) even if it works.
a.onclick=rateIt;
a.onmouseover=rating;
a.onmouseout=off;
div.appendChild(a);
addExhibits.appendChild(div);
};
这样也不会造成内存泄漏
注:您使用的外部js示例编写得非常糟糕
要使示例正常工作,您需要使用适当的变量(this/e.target/e.src元素)更改外部js中奇怪的me/num/sel变量。this.id而不是this。函数中的this
和元素中的this
不相同。在函数中,它应该是窗口
,在元素上,它是元素
本身。我想说的是,您分配的是的结果,而不是函数。试试anchor.onclick=function(){rateIt(anchor);}
我使用了上面提到的链接中的javascript文件。我试着将5颗星显示为图像&单击图像后,图像应该会改变。如果他只需要元素,它已经用“this”或event.target/event.srcelment传递了。您的方式也会在某些浏览器中造成内存泄漏。
var that = this;
anchor.onclick = function(){ rateIt(that); };
anchor.onmouseover = function(){ rating(that); };
anchor.onmouseout= function(){ off(that); };
var addExhibits=document.getElementById('mycontent'),
rateIt=function(e){
e=e||window.event;
var target=e.target||e.srcElement;//polyfill for older browser
console.log(this,target);
},
rating=function(e){
console.log(this,e.target);
},
off=function(e){
console.log(this,e.target);
},
mytest=function(){
var div=document.createElement('div'),
a=document.createElement('a');
div.id='rateMe';
a.id="_1"; // id's shouldn't contain _ - & numbers(1st letter) even if it works.
a.onclick=rateIt;
a.onmouseover=rating;
a.onmouseout=off;
div.appendChild(a);
addExhibits.appendChild(div);
};