简体   繁体   中英

How to concatenate a JS variable in an HTML script?

Can I do something like this?

var counter = SomeJSFunctionThatReturnsAvalue();

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

Can I do that? I need to append an underscore and an incremented number to the name.

Also, an off-topic question - that function above returns the value of an input type, for example:

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

Is the value "2" a number that I can use for math operations? If not, how can I make it one?

You can change the name using .setAttribute("name", theNameUwantToChangeTo); :

function changeName(number){

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

To get the value, just .value :

function getV(){

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

In case it does not return int, use parseInt()

function getV(){

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

To append the return value of your function to the name of the input tag, you can assign it to the name attribute of the input.

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

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

You can get the type of a variable by using "typeof"

typeof myValue; // "string"

You can change this to an integer by using the parseInt() function.

var intValue = parseInt(myValue, 10);

Here you go 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>

Your SomeJSFunctionThatReturnsAvalue(); would pass it to test() function.

to get the value of "2" from your second question for use in a math function, just do:

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

which returns 5.

Maybe you would benefit from looking into Angular.js or Ember.js if you are trying to do things like this. They can do data binding so that you can make readable and dynamic code just like what you are trying to create in your question.

If not that^ then this:

I saw you mentioned in a comment that you are dynamically creating the list. That is where you should be assigning the correct name with the counter (assuming there's no desire for counter to change dynamically. If there is a dynamic change then tell us what events are doing the change) Could you show us the code that is doing that please?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM