1
votes

Comment accéder à un élément si l'identifiant auquel je souhaite accéder est stocké dans une variable

J'essaye de créer dynamiquement des éléments et donc de leur donner dynamiquement de la valeur. Donc si je veux accéder à un élément en utilisant une valeur qui est stockée dans une variable, comment faire?

J'ai essayé d'utiliser $ ("# '" + g + "'") code > mais cela n'a pas fonctionné

var text1 = '<div id="' + g + '"></div>';
var text2 = '<input data-checkbox="' + g + '" type="checkbox" style="display:none;"/><h3 data-header="' + g + '" style="display:inline-block;">Timer' + g + '  </h3><input data-input="' + g + '" type="text" style="display:none;"/>';
var text3 = '<span data-minutes="' + g + '">00</span>:<span data-seconds="' + g + '">00  </span><button data-start="' + g + '" >start</button><button data-stop="' + g + '" style="display:none;">stop</button><button data-clear="' + g + '" style="display:none;">clear</button>';
$('#header').append(text1);
$("#'"+g+"'").append(text2, text3);


4 commentaires

Vous insérez aléatoirement des guillemets supplémentaires. Changez-le en $ ("#" + g) (PS essayez console.log ("# '" + g + "'"); et vous verrez le problème Comparez-le à quelque chose comme #header sur la ligne ci-dessus dans votre code ... voyez-vous des guillemets simples?


$ ("# '" + g + "'") entoure l'ID avec des ' s supplémentaires. Supprimez-les, et cela devrait fonctionner (au moins la partie sélection)


$ ("# g") cela ne fonctionne pas


@MiloniShah Regardez à nouveau mon commentaire. Est-ce ce que j'ai suggéré d'écrire? Portez une attention particulière aux détails. En programmation, chaque caractère que vous tapez est significatif.


3 Réponses :


1
votes

Ceci devrait être tout ce dont vous avez besoin:

$("#" + g)

Le fait qu'il s'agisse d'une chaîne est déjà implicite.


0 commentaires

1
votes

Vous avez juste une petite erreur.

Vous devez essayer comme ceci $ ("#" + g) .append (text2, text3);

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="header"></div>
var g = "data";
var text1 = '<div id="' + g + '"></div>';
var text2 = '<input data-checkbox="' + g + '" type="checkbox" style="display:none;"/><h3 data-header="' + g + '" style="display:inline-block;">Timer' + g + '  </h3><input data-input="' + g + '" type="text" style="display:none;"/>';
var text3 = '<span data-minutes="' + g + '">00</span>:<span data-seconds="' + g + '">00  </span><button data-start="' + g + '" >start</button><button data-stop="' + g + '" style="display:none;">stop</button><button data-clear="' + g + '" style="display:none;">clear</button>';
$('#header').append(text1);
$("#"+g).append(text2, text3);


0 commentaires

1
votes

Vous êtes sur le point de réussir; les commentaires essaient de vous dire que vous ne formez pas correctement le sélecteur.

Le sélecteur d'un identifiant doit être une chaîne de la forme:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="header">Header is here</div>

Dans votre Par exemple, vous avez trop de symboles ', donc l'id de votre variable g sera dans la chaîne, mais entouré de variables. Si g était test-id , vous auriez la chaîne:

var g = 'any-id';

var text1 = '<div id="' + g + '"></div>';
var text2 = '<span>Some other text</span>';

$('#header').append(text1);

$('#' + g).append(text2);

... et jQuery peut ' t correspondre à ça.

Tout ce que vous avez à faire est de supprimer ces guillemets, voici à quoi cela pourrait ressembler:

"#'test-id'"
'#id'


0 commentaires