Il est beaucoup plus facile de montrer le code Javascript que d'offrir une explication complexe:Manipuler Javascript RegExp résultats comme non-cordes
var html = '<input tabindex="1" type="text">';
html.replace(/tabindex="([0-9]+)"/g, 'tabindex="' + ("$1" * i) + '"');
Dans ce code, « $ 1 » sera toujours une chaîne, ce qui signifie ce RegExp se traduira toujours par 'tabindex = "NaN"' ... Utiliser parseInt ne fonctionne pas.
Est-il possible de transformer la réponse de RegExp en entier afin que je puisse effectuer des calculs sur le remplacement?
Juste par curiosité, qu'essayez-vous de faire avec ce code? – jessegavin
J'ai un bloc de HTML cloné dans le DOM, et je veux m'assurer que les attributs sont correctement mis à jour une fois clonés. Des choses simples, et ce qui précède est une simplification supplémentaire, comme un meilleur exemple. – beseku
Comme dit outis, alors, vous devriez certainement considérer 'cloneNode' et pas de piratage de chaîne HTML. Ensuite, vous pouvez utiliser des affectations simples comme 'newelement.tabindex = oldelement.tabindex * i', et vous n'avez pas à vous soucier des formats HTML exacts (par exemple' innerHTML' d'IE vous renvoyant 'tabindex = 2' sans guillemets). Le seul gotcha est que dans IE (oh, IE, encore une fois, comment nous vous aimons), l'attribution de l'attribut 'name' a quelques rides. – bobince