Javascript jQuery使用动态创建的ID
我试图在javascript函数中使用动态创建的ID,但它不起作用。我认为将Javascript jQuery使用动态创建的ID,javascript,jquery,Javascript,Jquery,我试图在javascript函数中使用动态创建的ID,但它不起作用。我认为将#预先添加到字符串id应该可以工作,但事实并非如此 代码: 因此,用法是: $('#testid') 但它不起作用。如何正确地使用动态创建的ID?我在使用Jquery时面临同样的问题。请尝试$(document).getElementbyId('myid')。希望能有所帮助 编辑 更改: $(“#”+idCheckBoxToCompare)by$(document)。getElementbyId(idCheckBoxT
#
预先添加到字符串id应该可以工作,但事实并非如此
代码:
因此,用法是:
$('#testid')
但它不起作用。如何正确地使用动态创建的ID?我在使用Jquery时面临同样的问题。请尝试
$(document).getElementbyId('myid')
。希望能有所帮助
编辑
更改:
$(“#”+idCheckBoxToCompare)by$(document)。getElementbyId(idCheckBoxToCompare)使用这个
var IterateCheckedDatesAndUncheckWithSameValue = function (elementNumber) {
idCheckBoxToCompare = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + elementNumber.toString();
if ($("#" + idCheckBoxToCompare).prop('checked') === false) {
return;
}
textBoxID = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + elementNumber.toString();
textBoxValue = $("#" + textBoxID).val();
for (i = 1; i < 8; i++) {
if (i !== elementNumber) {
idCheckBox = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + i.toString();
idInputBox = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + i.toString();
inputBoxValue = $("#" + idInputBox).val();
if ($("#" + idCheckBox).prop('checked') === true) {
if (inputBoxValue === textBoxValue) {
$("#" + idCheckBox).prop('checked', false);
}
}
}
}
}
var IterateCheckedDatesAndUncheckWithSameValue=函数(elementNumber){
idCheckBoxToCompare=“CMP_KD1_tcDE_tctpDNDR_chkDNDRDay”+elementNumber.toString();
if($(“#”+idCheckBoxToCompare).prop('checked')==false){
返回;
}
textBoxID=“CMP_KD1_tcDE_tctpDNDR_txtdnddrday”+elementNumber.toString();
textBoxValue=$(“#”+textBoxID).val();
对于(i=1;i<8;i++){
如果(i!==元素编号){
idCheckBox=“CMP_KD1_tcDE_tctpDNDR_chkDNDRDay”+i.toString();
idInputBox=“CMP_KD1_tcDE_tctpDNDR_txtdnddrday”+i.toString();
inputBoxValue=$(“#”+idInputBox).val();
if($(“#”+idCheckBox).prop('checked')==true){
如果(inputBoxValue===textBoxValue){
$(“#”+idCheckBox).prop('checked',false);
}
}
}
}
}
您的代码看起来很复杂,有太多的“
和”
。Javascript也可以通过使用+
来计算字符串和数字。无需先将其转换为字符串。因此,我对其进行了更新,使其更具可读性
试试这个
var IterateCheckedDatesAndUncheckWithSameValue = function(elementNumber) {
idCheckBoxToCompare = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + elementNumber;
if ($('#' + idCheckBoxToCompare).prop('checked') === false) {
return;
}
textBoxID = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + elementNumber;
textBoxValue = $('#' + textBoxID).val();
for (i = 1; i < 8; i++) {
if (i !== elementNumber) {
idCheckBox = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + i;
idInputBox = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + i;
inputBoxValue = $('#' + idInputBox).val();
if ($('#' + idCheckBox).prop('checked') === true) {
if (inputBoxValue === textBoxValue) {
$('#' + idCheckBox).prop('checked', false);
}
}
console.log('#' + idCheckBox); //print here just to see the id results
}
}
}
var IterateCheckedDatesAndUncheckWithSameValue=函数(elementNumber){
idCheckBoxToCompare=“CMP_KD1_tcDE_tctpDNDR_chkDNDRDay”+元素编号;
if($('#'+idCheckBoxToCompare).prop('checked')==false){
返回;
}
textBoxID=“CMP_KD1_tcDE_tctpDNDR_txtdnddrday”+元素编号;
textBoxValue=$('#'+textBoxID).val();
对于(i=1;i<8;i++){
如果(i!==元素编号){
idCheckBox=“CMP_KD1_tcDE_tctpDNDR_chkDNDRDay”+i;
idInputBox=“CMP_KD1_tcDE_tctpDNDR_txtdnddrday”+i;
inputBoxValue=$('#'+idInputBox).val();
if($('#'+idCheckBox).prop('checked')==true){
如果(inputBoxValue===textBoxValue){
$('#'+idCheckBox).prop('checked',false);
}
}
console.log(“#”+idCheckBox);//在此处打印以查看id结果
}
}
}
html中的ID
每页只能有一个元素。因此,请确保从该方法生成的ID
与其他元素不匹配
Jquery选择器可以读取字符串变量
因此,您只需执行var id=“#test”
。然后像这样放置$(id)
或
var id=“test”
然后$(“#”+test)
$(“#”+idCheckBox)
试试你正在创建的这个,$(“#testid”)
因此它找不到元素。使用$(“#”+idCheckBoxToCompare)
而不是$(“'.\35;“+idCheckBoxToCompare+”)
使用类而不是id来访问动态创建的元素,确保它可以工作为什么向下投票?因为@Satpal已经注释过了,所以您需要删除这些单引号。此外,看起来您不仅需要动态生成的id,还需要唯一的id。每当我需要动态生成的唯一id时,我都会这样做var id=“id“+Date.now()
然后可以执行$(“#”+id)
或文档。getElementById(id)
。希望这能有所帮助。你把VanillaJS和jQuery搞混了,而没有回答这个问题。这不是动态的。@Roberrrt这是纯javascript,我对VanillaJS一无所知,但在我的例子中,jQuery无法找到和管理文档完全加载后创建的id为的元素。因此,这行代码回答了“我试图在javascript函数中使用动态创建的ID,但它不起作用”的问题。我测试代码并为自己工作。让我解释一下:Vanilla JS是一个用来描述本机的、不受库代码影响的术语。(见附件)。您正在使用$(document)
方法,这意味着:您正在将文档包装到jQuery对象中,然后是将在常规文档上调用的函数。这与“vanilla”JS的库相冲突
var IterateCheckedDatesAndUncheckWithSameValue = function (elementNumber) {
idCheckBoxToCompare = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + elementNumber.toString();
if ($("#" + idCheckBoxToCompare).prop('checked') === false) {
return;
}
textBoxID = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + elementNumber.toString();
textBoxValue = $("#" + textBoxID).val();
for (i = 1; i < 8; i++) {
if (i !== elementNumber) {
idCheckBox = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + i.toString();
idInputBox = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + i.toString();
inputBoxValue = $("#" + idInputBox).val();
if ($("#" + idCheckBox).prop('checked') === true) {
if (inputBoxValue === textBoxValue) {
$("#" + idCheckBox).prop('checked', false);
}
}
}
}
}
var IterateCheckedDatesAndUncheckWithSameValue = function(elementNumber) {
idCheckBoxToCompare = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + elementNumber;
if ($('#' + idCheckBoxToCompare).prop('checked') === false) {
return;
}
textBoxID = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + elementNumber;
textBoxValue = $('#' + textBoxID).val();
for (i = 1; i < 8; i++) {
if (i !== elementNumber) {
idCheckBox = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + i;
idInputBox = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + i;
inputBoxValue = $('#' + idInputBox).val();
if ($('#' + idCheckBox).prop('checked') === true) {
if (inputBoxValue === textBoxValue) {
$('#' + idCheckBox).prop('checked', false);
}
}
console.log('#' + idCheckBox); //print here just to see the id results
}
}
}