动态创建的<a> tag is not working</a>函数

时间:2013-07-15 11:10:21

标签: javascript html5 dom

我正在移动网站上使用html,js和css.i通过HTML5 DOM&amp;为它分配了功能。它不起作用。

我的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/

中的一个函数

3 个答案:

答案 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变量。