问题如题,
行15,字符2是“d.style.top=150;”这一列;
把“var d = document.getElementByName(tmp);”换成“var d = document.getElementById(tmp);”并且把div的name属性改为id=d1时,就不会报错。为什么呢?如何通过name获得该对象?通过getElementByTagName?
高手指点一下。<p mydiv="d1" onclick="showpop()">点击此处</p>
<div name="d1"
top-level=TRUE;
style="border: solid 1px #000000;
padding: 5px;
width: 150px;
height=150px;
position: absolute;
display:none">小窍门1</div>
<script>
function showpop()
{
var evtTarget = window.event.srcElement; 
tmp=evtTarget.getAttribute("mydiv")
alert(tmp);
var d = document.getElementByName(tmp);
d.style.top=150;          
d.style.left=150;
d.style.display="block";

}
</script>

解决方案 »

  1.   

     getElementById()和getElementByName()注意: document.getElementById(" ") 得到的是一个对象,用 alert 显示得到的是“ object ”,而不是具体的值,它有 value 和 length 等属性,加上 .value 得到的才是具体的值!byId的时候,会根据html元素的id属性,根据规范id应当是唯一的,用来标示一个 element,比如<td>, <div> ......。所以返回唯一元素句柄或者null。对于表单控件<input><select><textarea>等,在不指定id的时候,name也会被视作id,比如<input type="text" name="abc" value="123">也可以用document.getElementById("abc")来获取而byName,从名字上看,就可以知道,它返回的是复数个对象。它根据name属性(name可以重复),得到所有name属性与参数相同的控件组成的数组,不存在时,返回0长度数组(.length == 0,而不是null)
    比如
    <input type="text" name="abc" value="1">
    <input type="text" name="abc" value="2">
    <input type="text" name="abc" value="3">var array = document.getElementsByName("abc");
    if (array.length == 0) {
    alert("Error");
    return;
    }for (var i = 0; i < array.length; i++) {
    alert(array[i].value);
      

  2.   


    对ie不支持getElementsByName的解决办法在firefox下getElementsByName运行正常,可一到IE下,就让我傻眼了,IE不支持,
    怎么办?自己模范一个试试,如下:
    function getElementsByName(tag,eltname){
      var elts=document.getElementsByTagName(tag);
      var count=0;
      var elements=[];
      for(var i=0;i<elts.length;i++){
         if(elts[i].getAttribute("name")==eltname){
            elements[count++]=elts[i];
         }
      }
      return elements;
    }
    使用方法:
    <input type="checkbox" name="chk" />
    <input type="checkbox" name="chk" />
    <input type="checkbox" name="chk" />var eltments=getElementsByName("input","chk"); 注:因为是自己做的函数,所以查找是全局的。
      

  3.   

    是我搞错了,没注意看
    Retrieves a collection of objects based on the value of the NAME attribute.