2015-05-03 3 views
0

Это, вероятно, очень просто, но не работает для меня.Set ID как JavaScript var

Мне нужно ссылаться и ID несколько раз в моем сценарии, поэтому вы хотите использовать var для ID, если мне нужно изменить идентификатор на более позднюю дату.

Мой код

var dataID= '#dataID'; 
var inputData = $('dataID td:nth-child(12)').text(); 

Цель состоит в том, чтобы получить данные из конкретной ячейки строки данных, а затем использовать эти данные в таблице, которая достигается со второй строки кода.

Когда я указываю ID во второй строке, он работает, но когда я пытаюсь использовать var для ID, это не так.

В диаграмме представлено много данных, поэтому я не хочу указывать идентификатор таблицы в каждой строке кода для ввода данных в диаграмму, следовательно, необходимо установить идентификатор с помощью var ,

Надеюсь, что имеет смысл.

Код был упрощен к проблеме. Если более полная функция полезна, вы можете опубликовать ее.

Большое спасибо

Richard

ответ

3

Вы были близки. JavaScript не будет интерполировать переменные в строках (например, PHP, например), поэтому вам нужно объединиться.

var dataID= '#dataID'; 
var inputData = $(dataID + ' td:nth-child(12)').text(); 

С новым ES6 строка интерполяции синтаксиса (который поддерживается в Chrome и Firefox уже):

var dataID= '#dataID'; 
var inputData = $(`${dataID} td:nth-child(12)`).text(); 
+0

Здравствуйте, благодарю вас за ответ. Он работает так, как мне нужно, с очень раздражающей адаптацией. по какой-то причине должно быть пространство между «и td: nth .. поэтому он читает:« td: nth-child (12) ». Это было необходимо для моей конкретной реализации, но не для базового тестирования, которое я сделал, поэтому некоторые люди могут захотеть попробовать место здесь, если их пример не работает. –

+0

@RichardHarris Вы правы! Спасибо за это! Я исправил свой ответ, теперь он содержит пространство. –

1

Вы должны использовать the Addition operator (+) конкатенировать переменную строку со строкой буквальным.

var dataID = 'dataID'; 
var inputData = $('#' + CSS.escape(dataID) + ' td:nth-child(12)').text(); 

Использование CSS.escape может быть хорошей идеей, в случае, если переменная не является допустимым идентификатором. Он по-прежнему широко не применяется, но может быть polyfilled.

+0

Я не мог заставить этот метод работать в моей конкретной реализации, хотя это может быть решение. У меня еще не было времени заглянуть в css.escape, так как я коротко вовремя, но похоже на аналогичное решение для вышеперечисленного. Спасибо –

+0

@RichardHarris В этом случае это не имеет значения: 'CSS.escape ('dataID') === 'dataID''. Но может быть полезно, если 'dataID' может быть чем-то вроде' 3:> #) '', который должен быть экранирован как' '\ 33 \: \> \ # \' ' – Oriol

+0

. А-а, это полезно тогда , Я мог бы использовать это немного позже. благодаря –