我使用JavaScript填充包含内容的HTML页面。其中一个内容是按钮/链接。内容是动态生成的,当用户按下按钮时,我需要获取一些已嵌入(作为属性)按钮本身的信息。
这是一般代码:
If you return a data.frame, Zeppelin will attempt to display it using Zeppelin's built-in visualizations.
当我进入该功能时(通过按下按钮),浏览器会抛出var newCell = newRow.insertCell();
var button = document.createElement("input");
button.type = "image";
button.src = "/images/image.png";
button.setAttribute("customData", "dynamically generated data");
button.setAttribute("onclick", "CustomFunction(this);");
newCell.appendChild(button);
CustomFunction(obj) {
var data = obj.getAttribute("customData"));
};
的错误。
但如果我摆脱cannot getAttribute of null object
,它似乎有效。
我已经找到了解决这个问题的方法,但我想知道导致这个问题的原因是什么?
编辑: 这是实际的代码:
button.src
答案 0 :(得分:2)
问题在于这一行:
buttonObj = obj.querySelector('input[type=image][customData]');
querySelector
在给定元素的后代中搜索与选择器匹配的元素。但是您要查找的元素与obj
相同,而不是其后代之一。
如果您将单击处理程序放在单元格而不是按钮上,则代码将起作用。
newCell.setAttribute("onclick", "CustomFunction(this);");
或
newCell.addEventListener("click", function() {CustomFunction(this);});
或者您只需将buttonObj
的参数设为CustomFunction()
,而不是使用querySelector()
。