javascript中动态创建button以后,加入onclick。为何网页加载时会自动运行这个onclick事件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中动态创建button以后,加入onclick。为何网页加载时会自动运行这个onclick事件?相关的知识,希望对你有一定的参考价值。

mycurrent_cell = document.createElement("td");
myButton = document.createElement("button");
aText = document.createTextNode("置顶");
myButton.appendChild(aText);
myButton.onclick = Function("setTop('"+XMLArray+"','"+id+"');");//这里
mycurrent_cell.appendChild(myButton);
mycurrent_row.appendChild(mycurrent_cell);

如上,我使用Function可以不自动运行,但是好像Function无法传入数组对象,如果那句改成
myButton.onclick = setTop(XMLArray,id);
那么在网页加载的时候就会自动执行onclick事件,重开了浏览器还是一样。

求解惑。如何加入这个button的onclick事件,别自动运行,点击事件触发的。

我的html是在head里写的这些代码
然后在body上载入代码
<body onload="start()">

参考技术A myButton.onclick = setTop(XMLArray,id);
这里不对,动态按钮onclick是不能传参的吧?
应该用
myButton.onclick=function()
setTop(XMLArray,id);


试一下吧
参考技术B myButton.onclick = function()setTop(XMLArray,id); 参考技术C 无语了 ,你是故意的吗?
onload就是浏览器载入触发事件啊,
不运行的话才出问题
建议你把 onload="start()" 去掉
然后在 button 控件中加入 onclick事件 来触发你写的function方法追问

我整个表格还有表格里的button都是js动态生成的。通过onload="start()",在start()这个函数里生成一个表格。如果去掉了,我如何调用这个js生成表格呢。

追答

哦 这样啊 ;明白你的意思了,
问一下你是不是直接把 你上面的方法写进start 里面了??
这样是不行的
你在.aspx中写下你的 onclick触发的 function 试试
好运

追问

我不是写aspx啊,我是直接就1个html页面。其他没了。

追答

好吧 这样啊...这样的你直接在这个页面上写一个新的function就好,
ps:这个function只能被 onclick 调用;
再试试吧

本回答被提问者采纳

使用 jQuery $('<button>') 语法动态创建的按钮为空

【中文标题】使用 jQuery $(\'<button>\') 语法动态创建的按钮为空【英文标题】:Button created dynamically with jQuery $('<button>') syntax is empty使用 jQuery $('<button>') 语法动态创建的按钮为空 【发布时间】:2011-12-15 15:53:19 【问题描述】:

当我单击带有.canActivate 类的按钮时,它会将我带到指定的div 并显示该按钮。但是,如果我单击返回并单击相同的按钮(或另一个具有相同类的按钮),它只会显示一个空按钮。问题是什么?

我有以下代码:

$('.canActivate').live('vclick', function (event) 
    $('#lblServiceName').text($(this).html());
    $('#lblServiceId').text($(this).attr('data-serviceId'));
    $('#lblServiceSubId').text($(this).attr('data-serviceSubId'));
    $('#lblServicePrice').text($(this).attr('data-price'));

    $('#wrapperServiceButtonDiv').empty();
    $('<button type="button" id="btnActivateService" value="Activate" />').appendTo('#wrapperServiceButtonDiv');

    $.mobile.changePage('#serviceDetailsDiv', 'slide', true, true);
);

【问题讨论】:

在问题中包含您的标记可能有助于人们更好地理解您的问题。顺便说一句,您可以使用.data("serviceId") 而不是attr("data-serviceId") 你的很多代码都没有意义...更改文本,然后调用 html??你能粘贴你的html吗:) 【参考方案1】:

首先,您的活动看起来不对。你有:

$('.canActivate').live('vclick', function (event) 

我确定你的意思是:

$('.canActivate').live('click', function (event) 

通过空按钮,我假设您的意思是其中没有文字。那是因为您使用以下行创建了一个空按钮:

<button type="button" id="btnActivateService" value="Activate" />

如果你想要一个标签,请使用:

<button type="button" id="btnActivateService" value="Activate">Click me</button>

由于您没有发布您的 HTML,我不明白为什么它在第一次点击时起作用。

此外,您可以通过将按钮链接添加到空来保存查找:

$('#wrapperServiceButtonDiv').empty().append(
    '<button type="button" id="btnActivateService" value="Activate">Click Me</button>');

【讨论】:

以上是关于javascript中动态创建button以后,加入onclick。为何网页加载时会自动运行这个onclick事件?的主要内容,如果未能解决你的问题,请参考以下文章

MFC 使用CreateEx创建了一个编辑框之后,如何动态响应编辑框的值变化?

Delphi动态加载子窗体名到MainMemu进行窗体切换

WPF控件动态添加 只是加了一个button 怎么显示不出来呢?窗口是空的

javascript的事件响应

js动态绑定click事件时function传参问题

html script 左右加减框 日期选择框