我有一个问题是在动态创建的按钮中存储值,这些按钮可以打开对话框。
所有按钮的对话框都是相同的,所以我有这样的定义:
$('<div id="dialog-form" title="Change coordinates">' +
'<p class="validateTips">Both fields are required.</p>' +
'<form>' +
'<fieldset>' +
'<label for="lon">Longitude (decimal)</label>' +
'<input type="text" name="lon" id="lon" value="" class="text ui-widget-content ui-corner-all">' +
'<label for="lat">Latitude (decimal)</label>' +
'<input type="text" name="lat" id="lat" value="" class="text ui-widget-content ui-corner-all">' +
'<input type="submit" tabindex="-1" style="position:absolute; top:-1000px">' +
'</fieldset>' +
'</form>' +
'</div>').appendTo(document.body);
然后我生成带有特殊“创建”按钮的对话框按钮:
$( "#create" ).button().on( "click", function()
{
var btn1 = document.createElement("BUTTON");
btn1.id = "change_coord";
var t1 = document.createTextNode("Change coordinates");
btn1.appendChild(t1);
document.body.appendChild(btn1);
generator++;
});
然后我有一个对话框声明和函数来处理我的对话框输入,在此之后,我正在尝试打印输入和我的id(来自生成器的值)。输入很酷,但ID不起作用
例如,我生成3个按钮,如btn1:1,btn2:2,btn3:3(按钮:id),但所有按钮的id输出为3。
我的应用程序将动态创建对象,我想通过此对话框修改此对象。并且“ID”值将用作我的数据库的“指针”。因此,当我点击第一个创建的按钮时,无论我创建了多少个按钮,它仍然必须具有“ID”值== 1
FIDDLE模拟我的情况。
谢谢大家的时间和意见。
答案 0 :(得分:0)
ID是唯一的,但您的功能是生成具有相同ID的克隆按钮。
btn1.id = "change_coord";
要么做些什么来使它们成为独特的,要么使用类。
问题#2
您正在使用var generator
生成ID(不再讨论HTML ID,如上所述)。然后,当您调用addUser
时,尝试访问生成器值,期望您从创建对话框时获得generator
值。它没有那样工作,你总是得到generator
的当前值。为了解决这个问题,你需要在addUser
函数内增加生成器,而不是在创建那些对话框弹出按钮时。见这里:https://jsfiddle.net/7rr85xuw/2/