【问题标题】:Setting element value in Javascript [duplicate]在Javascript中设置元素值[重复]
【发布时间】:2014-11-13 05:00:30
【问题描述】:

我有以下元素:

<input type="text" value="" tabindex="1" size="15" onblur="UpCaseSearch(this)" name="name">

这是一个文本字段。

我想在该字段中设置文本,我可以使用这样的命令成功地做到这一点(当我说成功时,我的意思是我可以看到该字段填充了文本 test

window.frames[1].document.getElementsByName('name')[2].value = "test"

我有两个问题:

  1. 当我查看页面上的那个元素时,我发现value 属性仍然为空""。这是为什么?我可以在该字段中看到的实际文本来自哪里?
  2. 如果我尝试以下命令,它实际上会设置value,但该字段仍然为空:

    window.frames[1].document.getElementsByName('name')[2].setAttribute('value', 'test')

所以看起来这两种情况下的值不同。对吗?

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    试试这个:

    window.frames[1].document.getElementsByName('srchsnam')[2].value = "Test"
    

    让我知道它是否有效!

    【讨论】:

    • 你读过这个问题吗?
    • 读取他设置值属性成功,但在文本字段中看不到值。这不是他的问题吗?
    • @Vohuman 这可能是我的错,因为我不小心发布了具有不同类名值的同一行。我后来修复了它,但在此之前给出了这个答案。
    【解决方案2】:

    简而言之,源代码(和 dom)中的 value 属性用作“默认值”。

    对于示例,想象一下这个输入字段(这是使用此功能的常用方法):

    <input type="text" 
          value="your name here" 
        onfocus="if (this.value===this.defaultValue) this.value='';" 
         onblur="if (this.value==='') this.value=this.defaultValue;" >
    

    换句话说,要在 html 标记 (&lt;input value="your_value" type="text"&gt;) 中设置默认值,并从 javascript 中设置值-属性(使用 方法:@ 987654324@ 和 elm.setAttribute('value', val)
    这也是为什么(如您所见)这些属性传播到元素的 outerHTML(以及元素的父元素 innerHTML)的原因。

    但是要获取/设置元素的当前属性你使用:var val=elm.valueelm.value=val

    旁注:textarea 的情况几乎相同:您可以在 textarea 上使用 .defaultValue 来检索它的 textContent(但您可以通过将其设置为 innerHTML 来覆盖/更改它),而您使用elm.value获取/设置当前值。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 2021-12-10
      相关资源
      最近更新 更多