在Javascript中设置元素值

在Javascript中设置元素值,javascript,html,Javascript,Html,我有以下要素: <input type="text" value="" tabindex="1" size="15" onblur="UpCaseSearch(this)" name="name"> 然而,我有两个问题: 当我在页面上查看该元素时,我看到value属性仍然是空的“。为什么呢?我在该领域看到的实际文本来自哪里 如果我尝试下面的命令,它将实际设置值,但该字段仍然为空: window.frames[1]。document.getElementsByName('name')

我有以下要素:

<input type="text" value="" tabindex="1" size="15" onblur="UpCaseSearch(this)" name="name">
然而,我有两个问题:

  • 当我在页面上查看该元素时,我看到
    value
    属性仍然是空的
    。为什么呢?我在该领域看到的实际文本来自哪里
  • 如果我尝试下面的命令,它将实际设置
    ,但该字段仍然为空:

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


  • 所以看起来这两种情况下的值不一样。是吗?

    简而言之,源代码(和dom)中的
    值属性充当“defaultValue”

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

    
    
    换句话说,要在html标记(
    )中设置默认值,并从javascript中设置值属性(使用以下方法:
    var val=elm.getAttribute('value')
    elm.setAttribute('value',val)

    这也是为什么(如您所见)这些属性会传播到元素的
    outerHTML
    (以及元素的父级
    innerHTML

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

    旁注:
    textarea
    :您可以在
    textarea
    上使用
    .defaultValue
    检索它的
    textContent
    (但您可以通过设置它的
    innerHTML
    )来覆盖/更改它,同时使用
    elm.value
    获取/设置当前值

    希望这有帮助!

    试试这个:

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

    让我知道它是否有效!

    你读过这个问题吗?它显示他成功地设置了value属性,但在textfield中看不到这些值。这不是他的问题吗?@Vohuman这可能是我的错,因为我不小心将同一行的不同值作为类名发布。我后来修复了它,但这个答案是pri给出的或者更进一步。
    <input type="text" 
          value="your name here" 
        onfocus="if (this.value===this.defaultValue) this.value='';" 
         onblur="if (this.value==='') this.value=this.defaultValue;" >
    
    window.frames[1].document.getElementsByName('srchsnam')[2].value = "Test"