我正在编写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();怀疑我的做法是正确的。为防御起见,我正在尝试首先解决此问题,然后测试是否将值正确传递给它。我随手学习。.
答案 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>")