#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 остановится после второго
'
.