2015-06-21 2 views
3
"<button onclick=editRecords('" + partId + "')>Add Quantity</button>"; 

Если я передаю строку partId без пробелов, она работает нормально. Но если я прохожу 'MRF 01', это дает мнеПередача параметра в виде строки, содержащей белые пробелы в функции javascript onclick

Uncaught SyntaxError: Unexpected token ILLEGAL.

Почему это и как я могу исправить это?

+1

Не должно быть ''

+0

Это дает Uncaught SyntaxError: Неожиданный токен} – Gurpinder

+2

Почему? Вы можете опубликовать еще несколько своих кодов. Я не знаю, что еще мешает. – Xufox

ответ

5

Использовать &nbsp; всякий раз, когда вы передаете пространство как параметр функции. Если вы используете js для генерации onclick, используйте encodeURIComponent.

"<button onclick=editRecords('" + encodeURIComponent(partId) + "')>Add Quantity</button>"; 
+0

Большое спасибо, его работа. Но если мне нужно передать несколько параметров, что мне делать? – Gurpinder

+0

editRecords ("mh   01", "secondParameter"); // тот же метод..use comma для разделения параметров, используйте & nbsp всякий раз, когда вам нужно пространство. Также помните, что ваша функция editRecords должна точно иметь 2 аргумента. Пример editRecords (i, j) –

+0

onclick = editRecords ('"+ encodeURIComponent (partId) + "," + encodeURIComponent (partName) + "') Является ли выше нормально работающим для двух параметров? – Gurpinder

2

Если значение атрибута HTML должно содержать пробел, вам необходимо использовать кавычки для разграничения значения.

Обратите внимание на подсветки синтаксиса здесь:

<span foo=bar baz ></span> 

Это атрибут foo со значением "bar" и булевой атрибут baz.

С другой стороны, этот

<span foo="bar baz"></span> 

является атрибутом foo со значением "bar baz". Обратите внимание, как baz подсвечивается по-другому?

Чтобы исправить вашу проблему, поставьте кавычки вокруг значения onclick или лучше, use a different way to bind the event handler.

2

Я предпочел бы изменить организацию цитат, чтобы получить более чистый код. Это будет делает его более удобным для чтения, а также более традиционные (в моей точки зрения):

var msg = 'Sometimes SO looks like a McDonalds drive through.'; 
 
var html = '<button onclick="clickHandler(\'' + msg + '\')">click me</button>'; 
 
function clickHandler (msg) { alert(msg); } 
 
document.body.innerHTML = html;

Еще более обычным будет следовать Felix Kling's wisdom (последняя строка).

+0

Возможно, вам стоит подумать над проблемой и решением проблемы. Мне нравится юмор. –

Смежные вопросы