#vbscript #hta
#vbscript #hta
Вопрос:
--------------------------------
В приведенном выше примере выбор производится из нижнего поля ввода, заполненного из массива. При выборе соответствующее значение индекса из второго массива копируется в буфер обмена. Окно сообщения используется для информирования пользователя о значении, скопированном в clipbord, но это неудобно. Я добавил второе поле ввода только для чтения, чтобы отобразить это значение.
<input type="text" id = "Resulta)" / style="text-align:center;" readonly style='width:160px'/ value= bOpt(isel)>
Переменная bOpt(isel)
не распознается как таковая и обрабатывается как текст, несмотря на то, что она не указана в кавычках. есть ли простой способ обойти это?
<html>
<head>
<HTA:Application ID="HTA"
ApplicationName="ListBox"
form name="myform"
onclick = 'Selected()'
<style type="text/css"> body {overflow-y:hidden;</style>
<style type="text/css"> body {overflow-x:hidden;</style>
Border="thin"
BorderStyle="normal"
Caption="no"
:::-webkit-scrollbar {
width: 0px; /* remove scrollbar space /
background: transparent; / optional: just make scrollbar invisible /
scroll = "no"
scrollflat = "no"
Icon=""
MaximizeButton="yes"
MinimizeButton="yes"
ShowInTaskBar="yes"
SingleInstance="yes"
SysMenu="no"
Version="1.0"
WindowState="maximize"
<script type="text/vbscript">
Option Explicit
Sub Document_OnKeyUp()
intKeyCode = Window.Event.Keycode
If intKeyCode = 27 Then Window.Close
End Sub
Dim aOpt, bOpt, iSel, iOpt, sOpt, messij
Sub Window_Onload()
Const cWid = 220
Const cHei = 122
window.resizeTo cWid, cHei
window.MoveTo screen.width/1-(cWid/1),screen.height/1-((cHei/1) 40 )
document.parentwindow.clipboardData.SetData("TEXT"),"Fred@Email.com.au"
'<script language = "vbscript" type = "text/vbscript">
aOpt = Array("Fred email",_
"Bert email",_
"Sally email",_
"David email",_
"Peter emal")
bOpt = Array("Fred@Email.com.au" , _ "Bert@Email.com.au" , _
"Sally@Email.com.au" , _
"David@Email.com.au" , _
"Peter@Email.com.au")
sOpt = "<select id='entries' style='width:160px'>"
' amp; "<option selected>" amp; document.title amp; "</option>"
For iOpt = 0 To UBound(aOpt)
sOpt = sOpt amp; "<option>" amp; aOpt(iOpt) amp; "</option>"
Next
sOpt = sOpt amp; "</select><p>"
document.getElementById("opts").innerHTML = sOpt
End Sub
Sub Selected()
Dim iSel
iSel = document.getElementById("entries").selectedIndex
messij = "YOU SELECTED" amp; chr(13) amp; chr(13) amp; " " amp; aopt(isel) amp; chr(13) amp; chr(13) amp; "WHICH CAUSED THE VALUE" _
amp; chr(13) amp; chr(13) amp; " " amp; bopt(isel) amp; chr(13) amp; chr(13) amp; "TO BE COPIED TO THE CLIPBOARD"
'msgbox messij
document.parentwindow.clipboardData.SetData("TEXT"),bopt(isel)
End Sub
</script>
</head>
<body>
<input type="text" id = "Resulta)" / style="text-align:center;" readonly style='width:160px'/ value= bOpt(isel)>
<body>
<body bgColor="yellow">
<center>
<span id="resulta"></span>
<span id="opts"></span>
</center>
</html>
Комментарии:
1. Форматирование
<input>
элемента выглядит немного странно (почему есть скобка) в концеid
атрибута (кажется странным именем для идентификатора) и есть косые черты / в середине определения элемента?2. Я удивлен, что у вас не появляются ошибки, я не вижу, насколько это
document.parentwindow.clipboardData.SetData("TEXT"),bopt(isel)
правильный синтаксис. Вы имели в видуdocument.parentwindow.clipboardData.SetData "TEXT", bopt(isel)
?
Ответ №1:
Я поместил это в подраздел
document.getElementById("fixit").value = bopt(isel)
который принял значение переменной, и я изменил свой исходный ввод, который обрабатывал имя переменной как текст, удалив значение = параметр
<input type="text" id = "fixit" / style="text-align:center;" readonlyx style='width:160px'>
Поле ввода теперь успешно загружается со значениями переменных
Я нашел свое решение в другом вопросе Stackoverflow, но не могу найти его снова, чтобы подтвердить.
Ответ №2:
Я добавил a Dim
, чтобы получить ключ escape для правильного завершения:
Dim intKeyCode
Я удалил явное значение, заданное для поля ввода:
value= bOpt(isel)
Я переименовал Resulta)
текстовое поле в Resulta
(что потребовало переименования более позднего интервала с Resulta
на Resultas
, чтобы избежать дублирования имен).
Затем, наконец, я явно ввел значение Resulta
в выбранный код:
resulta.value = bOpt(iSel)
Я никогда раньше не видел onClick()
события, добавленного в раздел HTA.