javascript - 不能将两个字符串相加(+=操作)

标签 javascript

我正在开发一个项目来获取用户鼠标滚轮的移动并知道它向上或向下滚动。 在我的代码中,我可以上下移动。 但我想将 Action 保存到字符串中。 例如,如果用户向上滚动 'mhmh' 显示返回“UUD”,但现在它只得到最后一个 Action (只是 U o D)

<script type="text/javascript">

function displaywheel(e){
    var evt=window.event || e //equalize event object
    var delta=evt.detail? evt.detail*(-120) : evt.wheelDelta
    //check for detail first so Opera uses that instead of wheelDelta
    var mhmh = ''
    var t = ''
    //mhmh = (delta<=-120)? mhmh + 'D' : mhmh + 'U'
    if (delta<=-120)
        t = "d"
    else
        t = "u"

    mhmh = mhmh + t
    document.getElementById("wheelvalue").innerHTML= mhmh //delta returns +120 when wheel is scrolled up, -120 when down
}

var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.x

if (document.attachEvent) //if IE (and Opera depending on usesr setting)
    document.attachEvent("on"+mousewheelevt, displaywheel)
else if (document.addEventListener) //WC3 browsers
    document.addEventListener(mousewheelevt, displaywheel, false)
</script>

您可以sample web page here 。 有什么问题吗?

最佳答案

问题是您每次调用事件处理程序时都会重新定义mhmh。这就是closures派上用场。将您的 mhmh 变量存储在事件处理程序上下文之外:

var mhmh = '';

function displaywheel(e){
    var evt=window.event || e //equalize event object
    var delta=evt.detail? evt.detail*(-120) : evt.wheelDelta
    //check for detail first so Opera uses that instead of wheelDelta

    var t = ''
    //mhmh = (delta<=-120)? mhmh + 'D' : mhmh + 'U'
    if (delta<=-120)
        t = "d"
    else
        t = "u"

    mhmh = mhmh + t
    document.getElementById("wheelvalue").innerHTML= mhmh //delta returns +120 when wheel is scrolled up, -120 when down
}

var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.x

if (document.attachEvent) //if IE (and Opera depending on usesr setting)
    document.attachEvent("on"+mousewheelevt, displaywheel)
else if (document.addEventListener) //WC3 browsers
    document.addEventListener(mousewheelevt, displaywheel, false)

关于javascript - 不能将两个字符串相加(+=操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31168887/

相关文章:

javascript - Ant Design 如何创建动态字段组

javascript - 如何匹配 RegEx/JavaScript 中出现的特定长度?

javascript - 检查函数是否从 Window 中调用的显式方法

javascript - 启动 svg 动画 onclick 事件

javascript - Appcelerator - 自定义 TableViewRow 中开关的编程切换

javascript - CoffeeScript 中的类指针?

javascript - 如何在 html 中执行 SVN http-请求 checkin /提交

javascript - 使用 react 导航重新加载或重新渲染事件

javascript - 在没有 settimeout 的情况下使用 JQuery 延迟函数

Javascript检测android原生浏览器