开发者问题收集

尝试在 HTML 页面中的 js 脚本中使用 window.onLoad() 时发生未捕获的 TypeError

2021-01-03
199

我正在尝试为我的网站制作一个按钮,该按钮会将我的 discord 复制到用户剪贴板。在将其编码到我的网站之前,我在 JSFiddle 上尝试了它,它运行完美。但是,当我在 PC 上运行该页面时,控制台中出现以下错误: copyText.js:2 Uncaught TypeError: Cannot set property 'onclick' of null at window.onload (copyText.js:2) window.onload @ copyText.js:2 load (async) (anonymous) @ copyText.js:1

我的 HTML 页面的代码如下: `

<!DOCTYPE html>

<html>

    <head>
    
        <meta charset="utf-8">
        <title>pinkflamey.nl :)</title>
        <link rel="icon" href="icon.png">
        <link rel="stylesheet" href="styles/navigation.css">
        <link rel="stylesheet" href="styles/base.css">
        
    </head>
    
    <body>
    
        <h1 class="title">pinkflameinthepan's website!!</h1>
        <br>

        <div class="topnav">
            <a href="index.html">Home</a>
            <a href="blog/blog.html">Blog</a>
            <a class="active "href="contact.html">Contact</a>
            <a href="about.html">About</a>
        </div>
    
        <h1>Contact</h1>
        <br>
        <br>
        <h3>Discord</h3>
        <div>
            <button id="copy" value="pinkflameinthepan#2989" class="copybutton">
                <input type="image" src="images/discord.png">
                <script src="scripts/copyText.js"></script>
            </button>
        </div>
    
    </body>
    
</html>

`

而我的 js 是: `

window.onload = function(){
    document.getElementById('test!!!').onclick = function(){
        const text = document.getElementById("test!!!").value;
            console.log(text);
            navigator.clipboard.writeText(text).then(() => {
                alert('Text copied to clipboard');
            }).catch(err => {
                alert('Error in copying text: ', err);
            });
    }
}

`

我尝试在线寻找解决方案,但没有成功。我尝试将脚本放在 HTML 页面中,而不是放在单独的 .js 文件中,并将其移动到 <button> 之前和之后以及页面的开头,但这不起作用。

我希望有人能帮我找到解决方案!!

3个回答

此行:

document.getElementById('test!!!').onclick

引发错误:

TypeError: Cannot set property 'onclick' of null

因为没有 id 为“test!!!”的 HTML 元素。

要修复错误,请将该行更改为:

document.getElementById('copy').onclick
terrymorse
2021-01-03

文档中没有 ID 为“test!!!”的元素。这会导致 document.getElementById('test!!!') 返回 null ,这就是您收到错误的原因。如果您尝试处理按钮上的点击,则应使用:

document.getElementById('copy').onclick = function(){
    ...
}
brunouno
2021-01-03

我认为你的意思是:

document.getElementById('copy').onclick = function(){
iamdlm
2021-01-03