wolfpride71
wolfpride71

Reputation: 27

Javascript Dynamic variable names not working

I have a table in a form with a list of products where there is an input for each (let's call it 'pc'). Each input is named as 'pc' and product id with an id as the same. IE: 'pc100', 'pc101', etc. Each input has an onkeyup event to call a function to populate a price where I pass the product id (onkeyup='myfunction(100) The function receives the id but I cannot configure the javascript to that id. I will have the rest of the code as long as I can get the dynamic variable name. The internet is full of all kinds of things like eval() and window[] and I have tried every possible combination I can think of/find. I know it's possible to get this to work. So...how can I get this alert to work?

Most the results I will give me 'pc100' when I need 'Heres my test'

function myfunction(idpro) {
    var pc331 = 'Heres my test';
    alert( "pc" + idpro );

}

Upvotes: -1

Views: 151

Answers (1)

tadman
tadman

Reputation: 211560

Don't use dynamic variable names. Do use look-ups in data structures:

function f(id) {
  var pc = {
    331: "Here's my test"
  }

  console.log(pc[id]);
}

Dynamic variables are a huge problem, especially from a security perspective. If you were naive and used eval someone could construct an id value that executes arbitrary JavaScript and then you have an XSS problem.

Upvotes: 2

Related Questions