Передача массива строк в функцию в строковом литерале - PullRequest
0 голосов
/ 07 октября 2019

Когда я передаю массив строк и индекс событию onclick, функция обратного вызова получает параметры из первых двух значений массива в виде числа вместо массива и индекса.

Iпытался преобразовать его в массив с помощью функции Array.from.

let presentantes = ["28411", "199904", "214966", "16226"];
console.log('presentantes', presentantes);
//presentantes (4) ["28411", "199904", "214966", "16226"]

let id = 1
let listNominated = `<li onClick="cargaPresentantes(${presentantes}, ${i})">`

function cargaPresentantes(presentantes, id) {
  console.log('presentantes', presentantes);
  console.log('id', id)

  //presentantes 28411
  //id 199904
}

Я ожидал получить массив ["28411", "199904", "214966", "16226"] и индекс 1

Ответы [ 3 ]

0 голосов
/ 07 октября 2019

На самом деле литералы шаблона работают примерно так: если переменная, которая передается в качестве заполнителя, не является строкой (в данном случае массивом), то она преобразует ее в строку. Таким образом, в вашем коде значение listNominated становится '28411,199904,214966,16226,1', и поэтому оно принимает первые два аргумента, то есть 28411 и 199904.

0 голосов
/ 07 октября 2019

Как сказала Андреа, мне пришлось добавить функцию прослушивания onclcik. Для этого мне сначала нужно было добавить строковый литерал в документ.

0 голосов
/ 07 октября 2019

Вы не можете передать параметры таким способом ... вам следует создать «функцию прослушивания onclick», а затем связать ее с элементом «li».

...