2013-09-30 4 views
1

Puis-je faire quelque chose comme ça?Comment concaténer une variable JS dans un script HTML?

var counter = SomeJSFunctionThatReturnsAvalue(); 

<tr><td> <input type="file" name="file-upload"+"_counter" id="file-upload" /></tr></td> 

Puis-je faire cela? Je dois ajouter un trait de soulignement et un nombre incrémenté au nom.

En outre, une question hors-sujet - cette fonction retourne au-dessus de la valeur d'un type d'entrée, par exemple:

<input type="hidden" name="hidden-input-type" value="2" /> 

est la valeur « 2 » un certain nombre que je peux utiliser pour des opérations mathématiques? Si non, comment puis-je en faire un?

+0

'" _counter "' est une chaîne. Si vous voulez le trait de soulignement et le _value_ du compteur, vous voulez '" _ "+ counter'. – Mathletics

Répondre

1

Ici vous allez fella.

<head> 
<script> 
function test($count) { 
document.getElementById("test1").setAttribute("name","file-upload_" + $count); 
} 
</script> 
</head> 
<body> 

<p>some content</p> 
<input id="test1" type="file" name="file-upload" id="file-upload" value="2"/> 
<p>some other content</p> 
<script>test(1);</script> 
</body> 

Votre SomeJSFunctionThatReturnsAvalue(); passerait à test() fonction.

pour obtenir la valeur de « 2 » à partir de votre deuxième question pour une utilisation dans une fonction mathématique, il suffit de faire:

var value = document.getElementById("test1").getAttribute("value"); 
document.write(parseInt(value, 10) + 3); 

qui retourne 5.

+0

Notez que ces modifications se produisent dans le DOM. Vous pouvez donc faire défiler la page et sélectionner "Afficher la source de sélection" pour voir les effets (vous ne verrez pas les changements dans "Afficher la source"). – OBV

+0

Hey, je ne peux pas l'obtenir par élément, car il existe un certain nombre de types d'entrée de fichiers, ils n'ont pas d'identifiants uniques, car ils sont créés dynamiquement, je veux quand je les crée, ils ont un nom unique. –

+0

Peut-être publier le code que vous utilisez pour les créer de manière dynamique – OBV

1

Vous pouvez modifier le nom à l'aide .setAttribute("name", theNameUwantToChangeTo);:

function changeName(number){ 

    var ele = document.getElementById("file-upload"); 
    ele.setAttribute("name", b.getAttribute("name")+ "_" + number); 
} 
changeName(number); 

Pour obtenir la valeur, juste .value:

function getV(){ 

    return document.getElementById("file-upload").value; 
} 
var number = getV(); 

Dans le cas où il ne retourne pas int, utilisez parseInt()

function getV(){ 

    return parseInt(document.getElementById("file-upload").value); 
} 
var number = getV(); 
+0

Je pense que vous n'avez pas eu ma question monsieur. –

+0

@BelmarkCaday Oh désolé. J'ai mis à jour ma réponse. –

1

Pour ajouter la valeur de retour de votre fonction Au nom de la balise d'entrée, vous pouvez l'affecter à l'attribut name de l'entrée.

var counter = SomeJSFunctionThatReturnsAvalue(); 
var fileUpload = document.getElementById('file-upload'); 

fileUpload.name = fileUpload.name + "_" + counter; 

Vous pouvez obtenir le type d'une variable en utilisant "typeof"

typeof myValue; // "string" 

Vous pouvez changer cela un entier en utilisant la fonction parseInt().

var intValue = parseInt(myValue, 10); 
0

Peut-être que vous pourriez bénéficier de regarder dans Angular.js ou Ember.js si vous essayez de faire des choses comme ça. Ils peuvent effectuer une liaison de données de sorte que vous puissiez rendre le code lisible et dynamique exactement comme ce que vous essayez de créer dans votre question.

Si pas^alors ceci:

Je vous ai vu mentionné dans un commentaire que vous créez dynamiquement la liste. C'est là que vous devriez assigner le nom correct au compteur (en supposant qu'il n'y ait pas de volonté de changement dynamique du compteur.S'il y a un changement dynamique alors dites-nous quels événements font le changement) Pourriez-vous nous montrer le code qui le fait? S'il vous plaît?

Questions connexes