语法错误的单词如何定义函数?

时间:2018-09-03 00:34:24

标签: javascript

我试图在代码和条件下定义函数。

<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,我想将其声明为变量。

感谢您的帮助。

2 个答案:

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