我正在使用一个在onclick上获取目标元素id的函数。例如,如果我单击id为“help”的文本元素。
var click = (e && e.target) || (event && event.srcElement);
var click将包含引用id为“help”的引用。
我想使用下面的if语句将var click与字符串'help'进行比较。
if (click == 'about') {do something}
比较不起作用,因为var click不是字符串。当我使用警报(单击)进行调试时,它会显示单击为“对象HTMLElement”。
您如何比较是否从var click获得了id'help'?
我可以写出像
这样的东西if (click == document.getElementById('help')) {do something}
但这会做长篇大论。
也
如果var点击是document.getElementById('help')
,我如何通过在var点击的id中添加单词“div”来创建一个新的“div”作为document.getElementById('helpdiv')
?
基本上,我想使用相同的函数为每个被点击的元素生成动态响应,而不必为每个元素创建单独的函数。
if (click.id == 'help'){
var link = click;
var divid = click.id+'div';
var div = document.getElementById(divid);
alert (div.id); //helpdiv string
}
TIA为您提供所有帮助。
答案 0 :(得分:2)
最简单的方法可能是
if (click.id == 'help') { //do something }
答案 1 :(得分:0)
该行:
var click = (e && e.target) || (event && event.srcElement);
未获得id
而非元素本身,请使用 getAttribute
来获取ID。
var id = click.getAttribute('id');
alert(id);
或者简单地说:
var id = click.id;
alert(id);
所以现在你的状况变成了:
if (id == 'about') {do something}
和
if (id == document.getElementById('help')) {do something}
答案 2 :(得分:0)
if (click["id"] != null && click["id"] == "help") { do stuff }
解决问题的最后一部分,你不能像你在问题中提出的那样修改你当前的对象来创建一个新的DOM对象,我不明白你是否要找到一个已经存在的对象并将它存储在一个变量中,或者从头开始创建一个新的,所以:
如果您想找到一个新的,并且您知道它的名称如“show”+当前点击变量的ID,您可以轻松地执行:
if (click["id"] != null) {
var found = document.getElementById("show" + click["id"]);
}
或者如果您打算创建一个新的:
if (click["id"] != null) {
var created = document.createElement("div"); // replace with whatever you need
created["id"] = "show" + click["id"];
}
答案 3 :(得分:0)
我认为这就是你所追求的......
if (click.id == 'help') { // Test to see if click is the 'help' element
var newEl = document.createElement('div'); // Create a new element
newEl.id = click.id + 'div'; // Set it's id
newEl.innerHTML = 'my help text goes here'; // Set it's content
click.parentElement.appendChild(newEl); // Add it to the document immediately following the 'click' element
}
请注意,元素的名称与元素本身不同。仅通过将“div”附加到某个现有名称来创建新元素名称本身并不会创建新元素。您必须明确地创建一个新的元素对象并将其添加到文档中,如上所示。