Document.getElementById.value返回Undefined

时间:2013-02-03 11:50:39

标签: javascript html

以下是我的HTML代码

<div id="dl_address" class="dl-row">
 <div class="dl-col1">
    <span id="dl_addressMarker" class="dl-Marker">*</span>Address:
 </div>
 <div class="dl-col2">
  <input  id="dl_addressMarker" name="p.streetAddress" maxlength="100" size="15"  
                            class="landing-qualpanel-input-standin" type="text" onClick="formOpt(id)" value="Home Address">
 </div>
</div>

以下是我的javascript代码

<script language="javascript" type="text/javascript">
function formOpt(x){

    var y=document.getElementById(x).value;
    alert(y);
    }
</script>

我无法理解为什么我会得到Undefined。请帮助。 提前致谢

3 个答案:

答案 0 :(得分:3)

那是因为你有两个具有相同Id的元素,这在HTML中是不允许的,这使得你的函数无法以这种方式获得输入。

更改输入的ID,你会没事的。

您可以通过传递元素而不是id来简化代码:

HTML:

<input  id="dl_addressMarker2" name="p.streetAddress"
      maxlength="100" size="15"  
      class="landing-qualpanel-input-standin" type="text"
      onClick="formOpt(this)" value="Home Address">

JavaScript:

function formOpt(x){
   var y = x.value;
   alert(y);
}

答案 1 :(得分:2)

你有两个问题。 (1)你应该像这样调用你的方法:formOpt(this)将传递当前元素。(2)你有重复的DOM ID。

写是这样的:

<script language="javascript" type="text/javascript">
function formOpt(x){
    //x is now the input element. You can fetch its id property.
    var y=document.getElementById(x.id).value;
    // you can do other things with x also.
    alert(y);
    }
</script>
<div id="dl_address" class="dl-row">
 <div class="dl-col1">
    <span id="dl_addressMarker" class="dl-Marker">*</span>Address:
 </div>
 <div class="dl-col2">
 <!-- I renamed the id on the input -->
  <input  id="dl_addressMarker_input" name="p.streetAddress" maxlength="100" 
  size="15"  class="landing-qualpanel-input-standin" 
 <!-- pass this into the function -->
  type="text" onClick="formOpt(this);" value="Home Address">
 </div>
</div>

参见工作示例:http://jsfiddle.net/KXCeh/1/

答案 2 :(得分:1)

你需要传递id的值,你还需要保持每个元素的唯一ID

            <div class="dl-col2">
  <input  id="dl_addressMarker" name="p.streetAddress" maxlength="100" size="15"  
                            class="landing-qualpanel-input-standin" type="text" onClick="formOpt('dl_addressMarker')" value="Home Address">
 </div>