0

我已经编写了基于表单中的用户输入创建框的代码。我使用构造函数为这些框提供这些值;名称、颜色、ID 和编号。我应该这样做,以便当用户单击页面中的框时,会出现一个警告框,说明该单个框的这些值是什么。我无法弄清楚如何正确显示大多数这些属性。

这是我为框分配属性值并将它们添加到页面的函数:

function addBox(newbox) {  
   for (var i = 0; i < newbox.number; i++) { 
   counter++;                         
   var scene = document.getElementById("scene");              
   var div = document.createElement("div"); 
   div.setAttribute("id", counter);                  
   div.className += " " + "box"; 
   div.innerHTML += newbox.name; 
   div.style.backgroundColor = newbox.color; 
   var x = Math.floor(Math.random() * (scene.offsetWidth-101));
   var y = Math.floor(Math.random() * (scene.offsetHeight-101));
   div.style.left = x + "px";
   div.style.top = y + "px"; 
   scene.appendChild(div); 
   div.onclick = display;           
    }                      
  }

这是我用于显示有关框的信息的功能:

function display(e) {
   var a = e.target.attributes;
   var b = e.target;
   console.log(b.name);     //shows "undefined"
   alert("id:" + "" + a[0].value); 
  }

我的警报消息正常工作,它根据计数器的值为每个框显示一个单独的数字。我不明白为什么我不能让 e.target 工作以显示名称、颜色或数字。我是初学者,所以任何想法都非常感谢。

4

3 回答 3

2

您需要使用.getAttribute()您设置的属性。

function display(e) {
    var element = e.target || window.event.target;

    console.log(element.getAttribute('name'));   
}
于 2013-01-22T02:20:29.617 回答
0

如果您希望它在 IE 中工作:

function display(e) {
   b = e ? e.target : window.event.srcElement,
   ret=[];
   console.log(b.getAttribute("name")); 
   // all attributes:
   for(att in b){
      ret.push(att+b[att]);
   }
   alert(ret.join("\n"));
}
于 2013-01-22T02:39:55.253 回答
0

在 IE 中工作

$(document).click(function (e) {
    	var element = e.target || window.event.target;
        console.log(element.getAttribute('id')+":"+element.getAttribute('name'));  
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

于 2017-03-29T04:31:22.137 回答