2010-11-20 81 views
0

我从来没有真正听说过这样简单的工作在每个浏览器中,但Firefox,所以任何人都可以在这一点上阐明一些东西?onclick javascript function will not work in Firefox

<a href="javascript:" onclick="quoteMe('name','id','yourname');" id="quote" style="border:1px solid white;color:#F1F1F1; font-weight:bold;">&nbsp;reply&nbsp;</a> 

jQuery的:在下面的第一个答案

var nameForm; 
function quoteMe(commenterName, id, name) { 
if (name == "") 
nameForm = 'Name: <input type="text" class="input" name="username" value="" />' 
else 
nameForm = '<div class="outlineTitle2">'+name+'</div>'+'<input type="hidden" class="input" name="username" value="'+name+'" />' 
if (jQuery("#replyForm"+id).length == 0) { 
jQuery("#"+id).append('<form method="post" id="replyForm'+id+'"><br /><input type="hidden" name="cid" value="'+id+'" /><input type="hidden" name="nameOfTable" value="articles" />'+nameForm+'<br />Reply: <input type="text" class="input" name="commentReply" value="'+commenterName+'" style="width:80%" /><input type="submit" value="POST" name="addReply" class="bigButton" /></form>'); 
} 
else { 
jQuery("#replyForm"+id).remove(); 
} 

}

更多的更新。 http://cl.ly/082z3g04381G3r1i2e08

+1

@Swith一些最佳做法..如果你没有使用href属性,更好地使用div方法。 hrefs用于SEO目的。在代码中查找错误的最简单方法是,安装firebug并在quoteMe中放置一个断点并检查它是否工作。如果不是从打印警报开始。你可以很容易地找到问题...你有安装萤火虫。 – kobe 2010-11-20 20:54:48

+1

@switz,我认为你的代码中有些东西正在崩溃,你的JavaScript没有被执行。 – kobe 2010-11-20 20:55:57

+0

没有错误。当我点击它时,没有任何反应,也没有错误出现。我会尝试div方法并回复你。我安装了萤火虫。谢谢 – switz 2010-11-20 20:58:07

回答

0

你不能把一个form作为table元素的子元素。使用表的父节点,或添加单元格。

(作为参考,适当的缩进版本的源码:

var nameForm; 

function quoteMe(commenterName, id, name) { 
    if (name == "") { 
     nameForm = 'Name: <input type="text" class="input" name="username" value="" />' 
    } 
    else { 
     nameForm = '<div class="outlineTitle2">' + name + '</div>' + 
        '<input type="hidden" class="input" name="username" value="' + name + '" />' 
    } 
    if (jQuery("#replyForm" + id).length == 0) { 
     jQuery("#" + id).append('<form method="post" id="replyForm' + id + '">' + 
            '<br />' + 
            '<input type="hidden" name="cid" ' + 
            '  value="' + id + '" />' + 
            '<input type="hidden" name="nameOfTable" ' + 
            '  value="articles" />' + 
            nameForm + '<br />' + 
            'Reply: <input type="text" class="input" ' + 
            '    name="commentReply" ' + 
            '    value="' + commenterName + '"' + 
            '    style="width:80%" />' + 
            '<input type="submit" value="POST" ' + 
            '  name="addReply" class="bigButton" />' + 
           '</form>'); 
    } 
    else { 
     jQuery("#replyForm" + id).remove(); 
    } 
} 

)。

5

尝试用alert替换quoteMe,看看会发生什么。
如果弹出警报,则表示您的功能有问题。

内联事件在Firefox工作也没关系,这里是普通电话使用:

<a href="javascript:void(0)" onclick="fn(this, param1, param2)">label</a> 

更短:

<a href="javascript:" onclick="fn(this, param1, param2)">label</a> 
  • ,如果你使用的href = “#”,你在调用onclick时需要return false,否则,哈希键将在地址栏中更改。它可能很烦人,尤其是在基于ajax的应用程序中。

  • 传递给函数this通常是有用的,它会给你点击的参考<a>。你不需要玩ID来找回它。

+0

非常好的解释...让我给你+1 :) – kobe 2010-11-20 21:16:26

+0

好的,所以经过一番调查。该函数运行并将代码放置在正确的位置。在萤火虫它的灰色虽然并没有出现。任何想法为什么它可能只是变灰了? – switz 2010-11-21 09:17:21

+0

好吧,这是设置显示:无;根据萤火虫计算风格。即使我手动更改显示或CSS以阻止或内联,它仍然没有。我从来没有见过这样的事情。 ID不重叠。它适用于其他浏览器。啊!!!! – switz 2010-11-21 09:24:38