Javascript 如何使用事件对象显示有关DOM元素的信息

Javascript 如何使用事件对象显示有关DOM元素的信息,javascript,events,alert,Javascript,Events,Alert,我希望能够在网页中单击一个框(这些框是通过代码创建的,并从表单接收值),并显示有关该框的信息。我正在使用display()函数,该函数使用事件对象和警报来显示有关该框的信息。到目前为止,我在尝试这样做的过程中遇到了多次奇怪的失败,这让我相信我没有正确地访问对象属性。我是一个初学者,所以这可能是非常明显的,但谢谢你的帮助 构造函数函数: function Box (counter, name, color, number, coordinates) { this.counter = c

我希望能够在网页中单击一个框(这些框是通过代码创建的,并从表单接收值),并显示有关该框的信息。我正在使用display()函数,该函数使用事件对象和警报来显示有关该框的信息。到目前为止,我在尝试这样做的过程中遇到了多次奇怪的失败,这让我相信我没有正确地访问对象属性。我是一个初学者,所以这可能是非常明显的,但谢谢你的帮助

构造函数函数:

function Box (counter, name, color, number, coordinates) {  
    this.counter = counter;
    this.name = name;
    this.color = color;
    this.number = number;
    this.coordinates = coordinates; 
}
全局变量:

var boxes = []; 
var counter = 0;
初始化函数:

function init() {     
    var generateButton = document.getElementById("generateButton");
    generateButton.onclick = getBoxValues;

    var clearButton = document.getElementById("clearButton");
    clearButton.onclick = clear;
}
从窗体中获取值的函数:

function getBoxValues() {
    var nameInput = document.getElementById("name");  
    var name = nameInput.value; 

    var numbersArray = dataForm.elements.amount;
    for (var i = 0; i < numbersArray.length; i++) {
        if (numbersArray[i].checked) {
            number = numbersArray[i].value;
        }
    }  

    var colorSelect = document.getElementById("color");  
    var colorOption = colorSelect.options[colorSelect.selectedIndex];  
    var color = colorOption.value;                       

    if (name == null || name == "") {                    
        alert("Please enter a name for your box");
        return;
    } else {
        var newbox = new Box(counter, name, color, number, "coordinates");  
        boxes.push(newbox);
        counter++;
        /*for(m = 0; m < boxes.length; m++) {
            counter.newbox = boxes[m];
        }*/
    }

    addBox(newbox);

    var data = document.getElementById("dataForm");               
    data.reset();
}

我已经把我在评论中发现的一些东西包括进去了

事件对象只提供名称,而不是元素的引用。所以有几件事

首先,如果您想成为浏览器不可知论者,您需要类似(e.srcelelement用于IE):

然后获取对元素的引用并执行所需操作:

    var refToElement = document.getElementById(x.id);

对不起,你的问题不清楚。你对你要做的事情给出了一个模糊的描述,对问题给出了一个更模糊的描述,然后刚刚通过了一大堆代码。你能澄清确切的问题和确切的问题,并将其与一段特定的代码联系起来吗?例如,在您当前的代码中有什么不起作用?您是否在错误控制台中收到脚本错误?我的问题是,我必须在显示功能中更改什么,以便当我单击某个框时,可以得到一个显示该框“名称”的警报?或者“颜色”或“数字”。当我这样做时,它表示我向document.getElementById传递了一个空字符串。您是否给了元素一个ID?
function display(e) {
    // alert(e.target);  says its an html object
    //alert(e.target.className); works - says "box"
    //alert(e.target.hasAttribute(name)); says false
}
    var x = e.target||e.srcElement;
    var refToElement = document.getElementById(x.id);