3 回答 3

1

您不会在任何地方调用 mytest() 函数。这是我看到的第一件事。另一件事是您将脚本放在 div (mycontent) 之上,因此在读取脚本时尚未创建 div。但我不完全理解你的目标是什么,或者你的问题到底是什么。

于 2013-07-15T11:19:46.033 回答
1

您的事件处理程序只需在此处分配相应函数调用的结果:

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); };
于 2013-07-15T11:13:31.073 回答
0

你不需要通过这个。

您可以通过多种方式访问​​函数内部的元素。

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);
};

这样你也不会造成内存泄漏。

ps.:您使用的外部js示例写得很糟糕。

为了使您的示例正常工作,您需要使用正确的变量(this/e.target/e.srcElement)更改外部 js 中奇怪的 me/num/sel 变量。

于 2013-07-15T11:35:59.410 回答