【问题标题】:Uncaught TypeError: Cannot set property 'href' of null未捕获的类型错误:无法将属性“href”设置为 null
【发布时间】:2017-09-19 09:47:53
【问题描述】:
  • 我正在尝试从网格下载文件。
    • 当我单击打开第一个窗口链接时,会打开一个弹出窗口。
    • 在该弹出窗口中,您将看到一个网格。
    • 但现在您会看到网格,但下面一行发生错误。
    • 我正在尝试下载类似此功能的文件 https://jsfiddle.net/335t5aow/

未捕获的类型错误:无法将属性“href”设置为 null

template: "<a class=\"sportsDataPlayer\" onclick=\"window.open('#= FileName#', 'popup', 'width=800,height=600,scrollbars=yes,resizable=no')\">#= FileName.substring(FileName.lastIndexOf('/')+1) #</a>"
  • 你们能告诉我如何解决它吗?
  • 在下面提供代码

http://jsfiddle.net/savyjgg2/2/

template: "<a class=\"sportsDataPlayer\" onclick=\"window.open('#= FileName#', 'popup', 'width=800,height=600,scrollbars=yes,resizable=no')\">#= FileName.substring(FileName.lastIndexOf('/')+1) #</a>"    
var csv = "a,b,c\n1,2,3\n";
var data = new Blob([csv]);
var a2 = document.getElementById(".sportsDataPlayer");
alert("I am here");
a2.href = URL.createObjectURL(data);

【问题讨论】:

  • .sportsDataPlayer 不是 ID。它是一个类选择器。你的意思是document.querySelector(".sportsDataPlayer") - 或者因为你使用jQuery,$(".sportsDataPlayer").attr("href",URL.createObjectURL(data))
  • 我没有看到任何错误
  • @RameshRajendran document.getElementById(".sportsDataPlayer"); 不起作用。 ".sportsDataPlayer" 不是 ID,不能在任何文档中使用。getXXX
  • 嘿,你能在小提琴中更新一下吗...这很混乱
  • 把var a2 = document.getElementById(".sportsDataPlayer"); a2.href = URL.createObjectURL(data);改成$(".sportsDataPlayer").attr("href",URL.createObjectURL(data)‌​)jsfiddle.net/mplungjan/j0bf1w8q

标签: javascript jquery html angularjs kendo-ui


【解决方案1】:

更新:

Ja Ja我已经更新了小提琴,但这只是部分锻炼(只会下载第一个文件)。要将文件呈现为可下载,您必须在 &lt;a&gt; 标签中使用 download 属性。

在您的 JS 代码中,您必须相应地对逻辑进行更改,以便 download 属性将分别应用于每个文件名。

试试这个FIDDLE,这里只是一个小修正

变化是,

  1. var a2 = document.getElementById("sportsDataPlayer");
  2. 从class=\"sportsDataPlayer\" 更改为id=\"sportsDataPlayer\"

【讨论】:

  • 正是我试图发布这个答案。但问题是小提琴(你的也是)只能第一次工作:( ...
  • @RameshRajendran 抱歉,我没听懂你想说的
  • 感谢您的回复...但如果我点击下载 csv 它仍然无法下载...您能告诉我如何解决它吗:(
【解决方案2】:

这里有错误: var a2 = document.getElementById(".sportsDataPlayer");

修复: var a2 = document.getElementsByClassName("sportsDataPlayer");

【讨论】:

  • getElementsByClassName 返回一个集合
猜你喜欢
  • 1970-01-01
  • 2014-06-01
  • 2014-06-26
  • 2018-01-03
  • 2014-02-07
  • 2014-03-06
  • 1970-01-01
相关资源
最近更新 更多