javascript - 随机未定义

标签 javascript jquery modal-dialog

我有一个使用 Math.random 生成随机 id 的模态。

    function new_modal(head, content, button){

    var random = Math.floor(1000 + Math.random() * 9000);

    var modal_html = '<div id="myModal_'+ random +'">' +
     '<div id="outer">' +
      '<div id="inner">' +
       '<div id="top">'+head+'</div>' +
        '<span class="bOk"><img class="btnClose" src="#"></span>' +
       '<div class="modalCnt">'+content+'</div>' +
       button +        
      '</div> <!-- Inner -->' +
     '</div> <!-- Outer -->' +
    '</div>';

    $('body').append(modal_html);
  // Close the Modal
    $('#myModal_'+ random +' span').on('click', closeFunction);
    return 'myModal_' + random;  

}

我有一个关闭函数,但是当它运行时,当警报(这是真的)下的代码运行时,它会给我“随机未定义”。这是为什么?当代码位于 new_modal 函数下时,它工作得很好,但是当我将它放在该函数之外并放入其自己的函数中时,它不起作用。

    function closeFunction() {
    var check = $(this);
        if(check.hasClass("bOk") || check.hasClass("btnText") === true) {
            alert("It's true");
            $(this).closest('#myModal_'+ random).hide();
        } 
        else {
            alert("It's false, do something else");
            return false
            }
}

最佳答案

它被称为变量作用域。 :) 如果您在一个函数内声明一个变量(使用 var 关键字),则该变量将无法在另一个函数中访问。 如果您想在两个函数中使用相同的随机数,请全局声明它(在函数之前)或通过参数传递它。

https://www.w3schools.com/js/js_scope.asp

关于javascript - 随机未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46975136/

相关文章:

jquery - Bootstrap Modal 不会在 MOBILE chrome 上触发,在移动 firefox/ie 上工作正常

twitter-bootstrap - 单击浏览器后退按钮时, Bootstrap 模式关闭但模式下拉保持

javascript - 观察者检测到变化并重新加载页面而不包括变化

javascript - 防止 Blade php函数编码符号

jquery - 如何部署 Bower 安装的包?

javascript - 向下滚动页面时如何保护模式弹出位置?

javascript - 使用 jQuery 检测 iPad 用户?

javascript - 将数学运算的结果绑定(bind)到 vuejs 中的输入或 div 结果

javascript - Laravel 分页表 - 对一列进行排序

javascript - Chart.js 2.0 使用货币和千位分隔符格式化 Y 轴