【问题标题】:VBScript can't set HTML name attributeVBScript 无法设置 HTML 名称属性
【发布时间】:2017-07-10 15:54:01
【问题描述】:

我正在尝试使用 VBScript 作为语言在 HTA 应用程序中生成 HTML 页面。

我似乎无法设置元素名称属性。除设置名称的代码外,此代码均有效。我在最后输出了 frmMenu.InnerHTML。

set selectApp = document.createElement("select")
selectApp.ID = "selApplication"
selectApp.name = "selApplication"
frmMenu.appendChild(selectApp)
Set selectApp.onchange = GetRef("Application_Change_Event")

我使用了 selectApp.Name = "selApplication",但也没有用。

这是整个 Sub()

GetRef("CycleMappingPage")
CycleMappingPage()

Sub CycleMappingPage()

    Set label1 = document.createElement("label")
    label1.innerHTML = "Application: "
    frmMenu.appendChild(label1)

    set selectApp = document.createElement("select")
    selectApp.ID = "selApplication"
    selectApp.name = "selApplication"
    frmMenu.appendChild(selectApp)
    Set selectApp.onchange = GetRef("Application_Change_Event")

    Set br1= document.createElement("br")
    frmMenu.appendChild(br1)

    Set br2 = document.createElement("br")
    frmMenu.appendChild(br2)

    Set label2 = document.createElement("label")
    label2.innerHTML = "Cycle: "
    frmMenu.appendChild(label2)

    Set selectCycle = document.createElement("select")
    selectCycle.setAttribute "name", "selCycle"
    frmMenu.appendChild(selectCycle)

    Set br3= document.createElement("br")
    frmMenu.appendChild(br3)

    Set br4 = document.createElement("br")
    frmMenu.appendChild(br4)

    Set inputButtonGenMap = document.createElement("input")
    inputButtonGenMap.setAttribute "type", "button"
    inputButtonGenMap.setAttribute "name", "btnRun"
    inputButtonGenMap.setAttribute "value", "Generate Map"
    frmMenu.appendChild(inputButtonGenMap)
    Set inputButtonGenMap.onclick = GetRef("GenerateMap")

    Set br5= document.createElement("br")
    frmMenu.appendChild(br5)

    Set br6 = document.createElement("br")
    frmMenu.appendChild(br6)

    Set inputButtonMainMenu = document.createElement("input")
    inputButtonMainMenu.setAttribute "type", "button"
    inputButtonMainMenu.setAttribute "name", "btnMainMenu"
    inputButtonMainMenu.setAttribute "value", "Main Menu"
    frmMenu.appendChild(inputButtonMainMenu)
    Set inputButtonMainMenu.onclick =  GetRef("LoadMainMenuPage")

    msgbox frmMenu.innerHTML

End Sub

【问题讨论】:

  • 我相信答案是不支持name属性,应该使用id属性。
  • 表单控件和 (i)frame 元素确实支持名称属性。问题不清楚,问题究竟是如何发生的?在显示 frmMenu 的内部 HTML 的消息框中看不到 select 元素的 name 属性?
  • 没错。而且我不能使用 name 属性来识别元素,因为它从不关联。还有其他问题,比如使用 DOM 创建的输入框默认是文本,但是使用 text 属性无法识别,因为它不粘。 HTA 是旧技术......它已经过时并且没有得到很好的支持。很失望,它没有得到更好的支持。
  • HTA 和它背后的 IE 一样工作,HTML 或 DOM 应该没有任何问题,至少除了通常的 IE 行为之外没有任何问题。我不熟悉 VBScript,因此我不能说您的代码是否有问题。不过,DOM 部分看起来还不错。
  • 顺便说一句。 input 元素没有 text 属性(option 有),inputvalue ...

标签: html dom vbscript hta


【解决方案1】:

这是旧版本 IE(IE8 之前)的行为。您有两种选择来解决它。

1) 在createElement 调用中指定名称:

Set sel = document.createElement("<select name='hello'/>")

2) 使用 X-UA-Compatible 标头将 HTA 的兼容模式更改为至少 IE 8(请参阅"X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE"


此行为记录在 name 属性下:

在 Internet Explorer 8 和更高版本中,您可以在运行时为使用 createElement 方法动态创建的元素设置 name 属性。要在早期版本的 Windows Internet Explorer 中创建具有 name 属性的元素,请在使用 createElement 方法时包含该属性及其值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-31
    • 2021-08-03
    • 2023-04-01
    • 2016-08-21
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    相关资源
    最近更新 更多