Включение круглых скобок в конкатенационные строковые броски "Неопределенная строковая константа" - PullRequest
0 голосов
/ 28 апреля 2019

Я пишу VBScript / HTA для вывода списка принтеров в цикле for.

document.write("<BUTTON onclick=SetDefaultPrinter('" & objItem.Name & "')>" & objItem.Name & "</BUTTON><BR>")

Цикл состоит в создании кнопок с текстом, представляющим имя принтера, и событием onclick для получениязначение, которое следует передать в процедуру.

Я ожидаю, что напечатанный код будет

<BUTTON onclick=SetDefaultPrinter('Ms Print to PDF')>MS Print to PDF</BUTTON>

Пробовал разные методы, такие как добавление chr (40) и chr (41) вместо скобки, но никто, что я пытаюсь, я получаюошибка.

Либо

Expected: ')'

, либо

Unterminated string constant

Если поместить тот же код в MsgBox, вы получите желаемые результаты.Может кто-нибудь помочь объяснить, что не так?Я хочу знать, почему это неправильно, как правильно и почему.У всего есть соответствующая кавычка или скобка, и, что я могу найти в Google, вложенные скобки хороши в таких строках.Так что я действительно не понимаю, почему это дает ошибку.Когда я запускаю скрипт, он все равно выводит html, но выдает ошибку скрипта.

Примечание: я ожидаю, что кто-то спросит другие аспекты моего кода.Я признаю, что я не самый сильный кодер и буду рад советам.Например, передача значения в SetPrinterDefault ();сомневаться в том, что я делаю это правильно.В свою защиту я пытаюсь сначала решить эту проблему, а затем проверить, правильно ли я передаю ей значение.Учить это, как я иду ..

1 Ответ

0 голосов
/ 28 апреля 2019

Измените свою линию на

document.write("<BUTTON onclick=""SetDefaultPrinter('" & objItem.Name & "')"">" & objItem.Name & "</BUTTON><BR>")

Проблема в том, что objItem.Name возвращает строку с пробелами. Поэтому при вызове функции onClick вы должны использовать одинарные или двойные кавычки.

Вы также можете использовать следующий код для достижения того же

document.write("<BUTTON onclick='SetDefaultPrinter(""" & objItem.Name & """)'>" & objItem.Name & "</BUTTON><BR>")

Или, если вы хотите добавить двойную кавычку, используя Chr

document.write("<BUTTON onclick='SetDefaultPrinter(" & Chr(34) & objItem.Name & Chr(34) & ")'>" & objItem.Name & "</BUTTON><BR>")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...