在连接字符串中包含括号会引发“未终止的字符串常量”

时间:2019-04-27 23:08:14

标签: vbscript

我正在编写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 :(得分:0)

将行更改为

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>")