Javascript 用于动态创建的函数<;a>;标签不起作用

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

我正在使用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');
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);
};