2016-11-24 4 views
-1

Ich versuche, dynamisch erstellte IDs in JavaScript-Funktion zu verwenden, aber es funktioniert nicht. Ich dachte, dass das Voranstellen # zu Zeichenfolge ID funktionieren sollte, aber es ist nicht.jQuery verwenden dynamisch erstellt ID

Code:

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); 
     } 
     } 
    } 
    } 
} 

Ich habe versucht gleiche ID zu bauen, wie das ist:

'#testid' 

so würde Nutzung sein:

$('#testid') 

Aber es funktioniert nicht. Wie verwendet man richtig dynamisch erstellte IDs?

+2

'$ (" # "+ idCheckBox)' versuchen Sie dies – prasanth

+1

Sie erstellen, '$ (" # # testid '")' so ist es nicht in der Lage, Element zu finden. Verwenden Sie '$ (" # "+ idCheckBoxToCompare)' anstelle von '$ ('' #" + idCheckBoxToCompare + '') ' – Satpal

+0

Verwenden Sie die Klasse anstelle von id für den Zugriff auf dynamisch erstellte Element, sicher, dass es funktioniert –

Antwort

1

Ihr Code sehen kompliziert mit vielen ist " und '. Javascript kann auch String und Nummer eingeben, indem Sie einfach + verwenden. Keine Notwendigkeit, es zuerst in eine Zeichenfolge umzuwandeln. Also habe ich es aktualisiert, um es lesbarer zu machen.

Versuchen Sie, diese

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 
     } 
    } 
} 

ID in html kann nur ein Element pro Seite sein. Stellen Sie also sicher, dass die von dieser Methode generierten ID nicht mit anderen übereinstimmen.

JQuery-Selektor kann String-Variable lesen.

So können Sie nur var id = "#test" tun. Dann stell es so ein $(id).

Oder

var id = "test"; dann $("#"+test).

-2

Ich habe das gleiche Problem mit Jquery .Try $(document).getElementbyId('myid'). Hoffe Hilfe.

bearbeiten ändern: $ ("#" + idCheckBoxToCompare) von $ (document) .getElementbyId (idCheckBoxToCompare)

+5

Sie vermischen VanillaJS und jQuery, während Sie die Frage nicht beantworten. – Roberrrt

+0

Dies ist nicht dynamisch. – FrenkyB

+0

Das ist so falsch wie möglich. – Liam

1

verwenden,

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); 
       } 
      } 
     } 
    } 
} 
Verwandte Themen