我得到这个错误的原因是什么?

时间:2016-08-05 00:14:42

标签: javascript html dom getattribute

我使用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

1 个答案:

答案 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()