Как можно использовать параметр функции JavaScript в теле функции в качестве селектора jQuery? - PullRequest
0 голосов
/ 19 сентября 2019

Моя функция JavaScript вызывается несколькими CGI-сценариями, и поэтому я хотел бы передать атрибут HTML-идентификатора сценария в качестве аргумента моей функции.Затем в теле функции я хотел бы использовать параметр, содержащий этот аргумент, в ярлыке jQuery.Однако мой параметр продолжает интерпретироваться как строковый литерал, когда я использую синтаксис jQuery.

Написание длинного JavaScript-кода для использования параметра работает, но поскольку я использую ярлык jQuery везде, мне бы хотелосьиспользовать тот же синтаксис для этого случая, а также.Каждая страница может иметь несколько таблиц, поэтому выбор элемента таблицы не будет работать.Я не могу найти документацию для того, что я пытаюсь сделать.В Perl это будет похоже на использование $ {имя_параметра} вместо $ имя_параметра.

deleteItem.cgi (Perl):

my $rows;
my $counter = 0;
for (@array) {
  $rows .= "
    <tr id='del$counter' class='bg-dark' onclick='setRowBackground(\'deleteItems\', $counter)'>
      <td>$_</td>
    </tr>
  ";
  $counter++;
}

<head>
<script type="text/javascript" src="setBackground.js"></script>
</head>
<body>
  <table id="deleteItems" class="bg-dark">
    $rows
  </table>
</body>

setBackground.js:

$(function() {
  // this uses the id name and is what I am trying to avoid so that
  setBackground.js can be used by multiple CGI scripts //
  $('#deleteItems').DataTable();
});

function setRowBackground(tableID, rowNumber) {
  // after removing class "bg-dark"
  none of these work: //
  $("#tableID").DataTable().row(rowNumber).nodes().to$().addClass("bg-white");
  $(#"tableID").DataTable().row(rowNumber).nodes().to$().addClass("bg-white");
  $(#tableID).DataTable().row(rowNumber).nodes().to$().addClass("bg-white");
  $(#(tableID)).DataTable().row(rowNumber).nodes().to$().addClass("bg-white");

  // these do work:
  ...but this one can only be used for a table with this id, and table ids
  are not consistent accross multiple CGI scripts! //
  $(#deleteItems).DataTable().row(rowNumber).nodes().to$().addClass("bg-white");
  // ...but this one is what I am trying to avoid since the rest of the code
  uses jQuery. //
  document.getElementById(tableId).DataTable().row(rowNumber).nodes().to$().addClass("bg-white");
}   

1 Ответ

1 голос
/ 19 сентября 2019

$("#" + tableID)

Спасибо, Бармар за решение!Конкатенация не произошла со мной.

...