我正在移动网站上使用html,js和css.i通过HTML5 DOM&为它分配了功能。它不起作用。
我的HTML代码(我试过'DOM方法);
<script>
var addExhibits = document.getElementById('mycontent');
function mytest()
{
var div = document.createElement('div');
div.id = 'rateMe';
var anchor = document.createElement('a');
anchor.id="_1";
anchor.onclick = rateIt(this);
anchor.onmouseover=rating(this);
anchor.onmouseout=off(this);
div.appendChild(anchor);
addExhibits.appendChild(div);
}
</script>
<body><div id='mycontent' title="Rate Me..."></body>
代码(静态创建标记 - 工作正常)
<div id="rateMe" title="Rate Me...">
<a onclick="rateIt(this)" id="_1" onmouseover="rating(this)" onmouseout="off(this)"></a>
</div>
rate(this)是外部JS(http://reignwaterdesigns.com/ad/tidbits/rateme/)
中的一个函数答案 0 :(得分: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); };
答案 1 :(得分:1)
你不能在任何地方调用mytest()函数。这是我看到的第一件事。另一件事是你把你的脚本放在你的div(mycontent)之上,所以在你的脚本被读取时还没有创建div。但我并不完全明白你的目标是什么,或者你的问题究竟是什么。
答案 2 :(得分: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示例写得非常糟糕。
要使您的示例正常工作,您需要使用正确的一个(此/ e.target / e.srcElement)更改外部js中的奇怪的me / num / sel变量。