我试图在代码和条件下定义函数。
<a href="#" onclick="javascript:pdfDownload('/pdf_name/spec_name.pdf'); return false;"><span class="icon-left"></a>
var onclickValue = document.getElementsByTagName('a')[41].getAttribute('onclick')
#above a tag is 41st.
但是onclickValue没有定义。
我认为,由于像':'这样的字符串,它似乎没有声明。
在这种情况下,如何定义onclick的值函数?
具体来说,我想要的是标签的spec_name,我想将其声明为变量。
感谢您的帮助。
答案 0 :(得分:2)
document.getElementsByTagName('a')[41]
不是一个好方法。如果索引改变怎么办?
随着项目的发展,元素的索引必将发生变化。因此,最好使用如下所示的类或ID:
<a id="downloadPDFLink" href="#"><span class="icon-left"></a>
<script type="text/javascript">
var downloadLink = getElementById("downloadPDFLink");
downloadLink.addEventListener("click", function(e) {
// do something here
}, false);
</script>
答案 1 :(得分:1)
您是否尝试检查它是undefined
还是null
?您可能需要考虑仅基于标识符(唯一的id
或CSS class
名称)获取文件名。
理想情况下,您可能想知道哪些链接将包含PDF文件,可能会添加CSS class
-类似于download-link
-因为您将多次重复使用它:
<a class="download-link" href="#" onclick="javascript:pdfDownload('/pdf_name/spec_name.pdf'); return false;"><span class="icon-left"></a>
这样您就可以专门选择元素:
document.getElementsByClassName('download-link').forEach(getFileNames);
function getFileNames(item) {
if (item && item.getAttributeNode("onclick").specified) {
var fileName = item.getAttributeNode("onclick").split("/").pop();
//do something with fileName
}
}
代替使用getElementsByTagName()
遍历所有a
标签的方法,但是如果由于某种原因您不能修改代码,则可能需要以下代码:
document.getElementsByTagName('a').forEach(getFileNames);