передача аргументов в функцию onclick автоматически

#javascript #jquery #html #css #twitter-bootstrap

#javascript #jquery #HTML #css #twitter-bootstrap

Вопрос:

У меня есть приведенный ниже html-элемент с динамически подключаемой функцией onclick(). При вызове выдается ошибка. Имя передаваемой переменной будет что-то вроде «ST-123». Выдает ошибку типа «ST» не определено. Можете ли вы помочь в этом?

hubName = «ST-123» ;

 IdCell.append("<button type='button' class='btn-link' style='float:right; margin-right:-6px; margin-top:-11px;' onclick='unPair($(this)," name ")'>
 <img src='../images/link-minus.png'> </button>");
  

Здесь ячейка ID является одной из ячеек таблицы.

Комментарии:

1. Все становится проще, когда вы понимаете, что встроенные обработчики событий относятся к 1999 году.

2. unPair Возвращает ли функция?

3. onclick='unPair($(this)," name ")' будет вычисляться onclick='unPair($(this),ST-123)' как . Поскольку ST-123 это не строка, она попытается вычесть 123 из ST . И если ST не существует, он выдаст исключение.

4. unPair — это функция. Он ничего не возвращает . Он выполняет манипуляции с DOM

5. Привет, Ивар, ты прав. как это решить?

Ответ №1:

Ваша проблема в том, что ваш второй аргумент не является строкой.

 onclick='unPair($(this)," name ")' 
  

будет вычисляться как

 onclick='unPair($(this),ST-123)'
  

Поскольку ST-123 это не строка, она попытается вычесть 123 из ST . И если ST не существует, он выдаст исключение.

Поскольку вы не можете ' легко использовать, потому что это приведет к завершению вашего onclick атрибута, вы можете попробовать использовать двойную кавычку. Но поскольку ваша строка начинается с нее, вам нужно сначала экранировать ее, добавив к ней обратную косую черту следующим образом:

 onclick='unPair($(this),"" name "")'
  

Это приведет к следующему:

 onclick='unPair($(this),"ST-123")'
  

Ответ №2:

Используйте больше jQuery

 var button = $('<button />', {
    type    : 'button',
    'class' : 'btn-link',
    css     : {
        float       : 'right',
        marginRight : '-6px',
        marginTop   : '-11px'
    },
    on      : {
        click : function() {
            unPair( $(this), name );
        }
    }
}),
    image = $('<img />', {
        src : '../images/link-minus.png'
});


IdCell.append( button.append(image) );
  

Ответ №3:

вам нужно передать значение в виде строки

  onclick="unPair($(this),'" name "')"
  

или вы можете использовать двойные кавычки

  onclick='unPair($(this),"" name "")'
  

Комментарии:

1. Первый не сработает, так как ваша функция onclick остановится после второго ' .