代码之家  ›  专栏  ›  技术社区  ›  송준석

如果函数包含语法错误的单词,我该如何定义它?

  •  -1
  • 송준석  · 技术社区  · 7 年前

    <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\u名称,并且我想要将它声明为一个变量。

    我会感激你的帮助。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Cy Pangilinan    7 年前

    undefined null ? 您可能需要考虑仅基于标识符(唯一标识符)获取文件名 id 或CSS class 名称)。 理想情况下,你会想知道哪些链接会有PDF文件,虽然,可能会添加一个CSS -像这样的 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);
    
        2
  •  2
  •   Zilong Li    7 年前

    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>