Javascript 没有定义随机性
我有一个使用Math.random生成随机ID的模式Javascript 没有定义随机性,javascript,jquery,modal-dialog,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="in
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;
}
它被称为变量范围。:) 如果在一个函数中声明变量(使用var关键字),则在另一个函数中将无法访问该变量。 如果要在两个函数中使用相同的随机数,可以全局声明它(在函数之前)或通过参数传递它 您可以这样使用
var random="";
function new_modal(head, content, button){
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;
}
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 random=”“;
功能新模式(标题、内容、按钮){
随机=数学地板(1000+数学随机()*9000);
var modal_html=''+
'' +
'' +
''头+''号+
'' +
''+内容+''+
按钮+
' ' +
' ' +
'';
$('body').append(modal_html);
//关闭模式
$('#myModal'+random+'span')。on('click',closeFunction);
返回'myModal_u2;'+随机;
}
函数closeFunction(){
var check=$(此);
if(check.hasClass(“bOk”)| check.hasClass(“btnText”)==true){
警惕(“这是真的”);
$(this).closest('#myModal'+random).hide();
}
否则{
警惕(“这是错误的,做点别的”);
返回错误
}
}
正如所指出的,这是一个范围问题,随机
仅存在于新模式
函数内,因此无法在此函数外访问。您可以将函数直接嵌入。在
调用时,如下所示:
功能新模式(标题、内容、按钮){
var random=数学地板(1000+数学随机()*9000);
var modal_html=''+
'' +
'' +
''头+''号+
'' +
''+内容+''+
钮扣+
' ' +
' ' +
'';
$('body').append(modal_html);
//关闭模式
$('#myModal'+random+'span')。在('click',function()上{
var check=$(此);
if(check.hasClass(“bOk”)| check.hasClass(“btnText”)==true){
警惕(“这是真的”);
$(this).closest('#myModal'+random).hide();
}否则{
警惕(“这是错误的,做点别的”);
返回错误
}
});
返回'myModal_u2;'+随机;
}
random是新模态函数的局部变量。你如何想象它将从该功能外部访问?你使用ID是可怕的。。如果您使用类,您甚至不需要random
,。。只需添加一个类,比如说“modal”,然后您就可以执行->$(this).closest('.modal”).hide()
我确实需要random,因为我需要能够将模态放在另一个模态上。我当然可以使用class+random而不是id+random。这就是我所拥有的,它工作得很好。但不幸的是,我需要外部的close函数。太好了,我必须更改$(this)。最近('#myModal_'+random)。隐藏();以检查。最近('#myModal_'+random).hide();谢谢。
var random="";
function new_modal(head, content, button){
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;
}
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
}
}