CSDN问答——精选问答Vol.6

本文摘选CSDN问答板块热门问题,涵盖Python私有类实例化、Vue滚动事件屏蔽、Vue3 render函数绑定点击事件、C语言内存管理、JavaScript函数多次调用、Echarts动态数据展示及原生JS导航跳转等技术难题,分享优质解答。
摘要由CSDN通过智能技术生成

《精选问答》挑选CSDN问答频道每周最新最热的优质回答,为大家提供可信赖的优质解答,点击查看更多已解决问题

目录

1、python自定义类的私有类中,如何实例化私有类本身

2、VUE中如何实现鼠标移动到某网页区域,屏蔽滚轮的功能

3、vue3的render函数绑定点击事件失败

4、C中free报错问题:heap corruption detected

5、通过id调用的函数,如何在一个页面中运行多次?

6、echarts 实现动态数据展示效果

7、原生js页面内点击导航按钮跳转到指定位置,为什么实现不了?


1、python自定义类的私有类中,如何实例化私有类本身

问题描述:

在下述代码中,执行之后会有出错提示 NameError: name '_B__B' is not defined

class A:
    def __init__(self):
        self.name = '测试类'
        self.class1 = self.__B()
        self.class2 = self.class1.doSomeThing()
 
    class __B:
        def __init__(self):
            self.name = '私有类'
 
        def doSomeThing(self):
            return __B()
 
a = A()

 请问,如何在私有类中实例化本身的类型,使用公有类可以实例化,不用回答这个方式了

解决方案——来自@sHlsy1995的回答

关键还是你是一个私有类,所以在A里的名字不是__B而是_A__B

class A:
    def __init__(self):
        self.name = "测试类"
        self.class1 = self.__B()
        self.class2 = self.class1.doSomeThing()
 
    class __B:
        def __init__(self):
            self.name = "私有类"
 
        def doSomeThing(self):
            return self.__class__()

本题更多回答戳链接:https://ask.csdn.net/questions/7449628


2、VUE中如何实现鼠标移动到某网页区域,屏蔽滚轮的功能

问题描述:

如图,这是一个用canvas库(fabric.js)生成的图像,用鼠标滚轮能使图像缩放。问题是用滚轮的同时,整个网页也会上下滚动。有没有办法让我鼠标停留在图像上滚动时,屏蔽网页的滚动。

我知道Vue有一个@scroll.prevent的写法,但是好像只能用在特定的组件上,如input.

如果用VUE不行的话,用原生js解决也行。

以下是滚轮实现canvas画布缩放的代码

onMouseWheel(){
    // 滚动缩放画布大小
    this.canvas.on('mouse:wheel', (options) => {
      let zoom = (options.e.deltaY > 0 ? -0.1 : 0.1) + this.canvas.getZoom()
      // 最小为原来的1/10
      zoom = Math.max(0.1, zoom)
      // 最大是原来的3倍
      zoom = Math.min(5, zoom)
      // 在中心缩放
      const zoomPoint = new fabric.Point(this.canvas.width / 2, this.canvas.height / 2)
      this.canvas.zoomToPoint(zoomPoint, zoom)
    })
  }

——————————————————6月15日更新

贴出我最后实现的代码,唯一的缺点就是滚动条会消失

window.onload = ()=>{
  let mapcover = document.getElementById("mapcover");
  console.log('执行了')
  mapcover.onmouseout = ()=>{
    document.documentElement.style.overflow='auto';
  }
  mapcover.onmouseover = ()=>{
    document.documentElement.style.overflow='hidden';
  }
}

解决方案——来自@雨生百谷,方为谷雨的回答

你可以试试给canvas绑定个mouseover和mouseout事件在这个里可以设置个禁用滚轮 类似这样https://www.cnblogs.com/linjiangxian/p/11460930.html ,其他方法都会很麻烦,比如鼠标移动获取坐标,之类的

本题更多回答戳链接:https://ask.csdn.net/questions/7448934


 

3、vue3的render函数绑定点击事件失败

问题描述:

 app.component("child", {
        props: ["count"],
        methods: {
          handleClick() {
            console.log("test");
          },
        },
        render() {
          const { h } = Vue;
          return h(
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值