8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何修复我的 JavaScript 函数?我无法定义和使用此函数

Certes 2月前

51 0

在这段代码中,我尝试根据所单击的按钮将“weaponselector”定义为某个值。这是一个非常基本的问题,我确信结果只是改变未来......

在这段代码中,我试图根据所单击的按钮将“weaponselector”定义为某个值。这是一个非常基本的问题,我确信结果只是将函数更改为变量或类似简单的东西,但我对此有点困惑。

let wepo1=1;
let wepo2=2; 
let wepo3=3;
let wepo=0;


function weaponselector {
}



document.querySelector("button[name='shotgun/parent']").addEventListener("click",function() {
    weaponselector(wepo + wepo1);   
});

document.querySelector("button[name='pistol']").addEventListener("click",function() {
    weaponselector(wepo+wepo2);     
});

document.querySelector("button[name='rifle']").addEventListener("click",function() {
    weaponselector(wepo+wepo3); 

(添加了一些引用“武器选择器”函数的后续代码,这段代码可能也有问题,如果你愿意的话,请随时帮助我。我是 JS 新手,所以我遇到了很多很容易解释的错误)


if (weaponselector=1){ 
    let weapon="shotgun" === {
        weapondamage:20
    };
}
if (weaponselector=2) {
    let weapon="pistol" === {
        weapondamage:5
    };
}

if (weaponselector=3) {
    let weapon="rifle" === {
        weapondamage:10 
    };
}

帖子版权声明 1、本帖标题:如何修复我的 JavaScript 函数?我无法定义和使用此函数
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Certes在本站《javascript》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我想添加一个可以用 SVG.js 操作的简单 SVG 示例,我试过了。

    你好!

    特...

    我想添加一个可以使用 SVG.js 操作的简单 SVG 示例

    我试过这个。

    <main>
        <section class="center">
            <h1>Hello!</h1>
            <p>This is project page.</p>
        </section>
        <section id="canvas">
            <canvas></canvas>
        </section>
    </main>
    
    <script>
        import { SVG } from '@svgdotjs/svg.js';
        var draw = SVG().addTo("#canvas").size(300, 300)
        var rect = draw.rect(100, 100).attr({ fill: '#f06' })
           
    </script>
    

    但它在浏览器控制台上打印出此错误:

    TypeError: Cannot read properties of null (reading 'put')
        at Svg.addTo (@svgdotjs_svg__js.js?t=1722923695034&v=5d11dd42:1846:32)
        at instance (index.svelte:13:22)
        at init (chunk-5CD65IUO.js?v=5d11dd42:2137:23)
        at new Project (index.svelte:14:55)
        at createComponent (svelte-hooks.js?v=5d11dd42:206:20)
        at targetCmp.$replace (svelte-hooks.js?v=5d11dd42:269:15)
        at refreshComponent (proxy.js?v=5d11dd42:171:15)
        at ProxyAdapterDom.rerender (proxy-adapter-dom.js?v=5d11dd42:77:5)
        at proxy.js?v=5d11dd42:408:9
        at Array.forEach (<anonymous>)
    

    看起来 Svg.addTo() 方法无法找到 targetDOM。我认为这是 DOM 加载时间的问题,因此我尝试了这个:

    <main>
        <section class="center">
            <h1>Hello!</h1>
            <p>This is project page.</p>
        </section>
        <section id="canvas">
            <canvas></canvas>
        </section>
    </main>
    
    <script>
        import { SVG } from '@svgdotjs/svg.js';
    
    document.addEventListener("DOMContentLoaded",()=>{
        var draw = SVG().addTo("#canvas").size(300, 300)
        var rect = draw.rect(100, 100).attr({ fill: '#f06' })
    });
    </script>
    

    然后...什么都没发生。没有错误,没有日志。似乎 'DOMContentLoaded' 事件从未在 svelte 中触发?有人能帮我在 vite+svelte 应用上实现 SVG.js 吗?

  • 使用 Svelte 时不要查询 DOM 中的元素,这可能会导致选择组件外部的元素。如果可能,请按照 Peppe LG 的建议对元素使用 bind:this 或执行操作。

  • 解决了:

    Svelte 具有不同的 生命周期 . onMount 函数来完成我想要的工作。

    <main>
        <section class="center">
            <h1>Hello!</h1>
            <p>This is project page.</p>
        </section>
        <section id="canvas">
            <canvas></canvas>
        </section>
    </main>
    
    <script>
        import { SVG } from '@svgdotjs/svg.js';
        import {onMount} from 'svelte'
    
    onMount(async()=>{
        var draw = SVG().addTo("#canvas").size(300, 300)
        var rect = draw.rect(100, 100).attr({ fill: '#f06' })
    });
    </script>
    
  • 最好使用自己的 action 而不是使用 onMount() :

    <script>
        import { SVG } from '@svgdotjs/svg.js'
    
        function addSvg(containerElement){
            const draw = SVG().addTo(containerElement).size(300, 300)
            const rect = draw.rect(100, 100).attr({ fill: '#f06' })
        }
    </script>
    
    <main>
        <section use:addSvg>
        </section>
    </main>
    
  • 以上只是一些随机评论,指出了代码中明显的问题。更大的问题是,你完全不清楚你的代码到底应该完成什么,所以一个接一个地修复这些小问题就是只见树木不见森林。你试图做的事情很可能应该以完全不同的方式编写。但如果我们不能更好地理解你试图做的事情,我们就无法告诉你那是什么。

  • 是赋值,而不是比较,函数名是指向函数的指针,所以它永远不会等于 1、2 或 3。

返回
作者最近主题: