我编写的代码可以根据表单中的用户输入创建框。我使用构造函数来给框提供这些值;名称,颜色,身份证号码和号码。我应该这样做,以便当用户点击页面中的框时,会出现一个警告框,说明这些单独框的值。我无法弄清楚如何正确显示大部分属性。
这是我将属性值分配给框的功能,并将它们添加到页面中:
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工作来显示名字,颜色或数字。我是初学者,所以任何想法都非常感激。
答案 0 :(得分:1)
您需要将.getAttribute()
用于您设置的属性。
function display(e) {
var element = e.target || window.event.target;
console.log(element.getAttribute('name'));
}
答案 1 :(得分: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"));
}
答案 2 :(得分: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>