Javascript 从函数返回字符串(不带Eval)
我有一个生成随机字符串的函数Javascript 从函数返回字符串(不带Eval),javascript,jquery,string,return,Javascript,Jquery,String,Return,我有一个生成随机字符串的函数 function randString() { var char = "0123456789abcdefghijklmnopqrstuvwxyz", fullchar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", genHash = "", i; for (i = 0; i < 8; i++) { var rnum
function randString() {
var char = "0123456789abcdefghijklmnopqrstuvwxyz",
fullchar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
genHash = "",
i;
for (i = 0; i < 8; i++) {
var rnum = Math.floor(Math.random() * char.length)
return genHash += char.substring(rnum, rnum + 1)
}
}
我知道我可以在randString()
函数中执行此操作(例如,将其设置为输入值并从输入中获取值),但我试图弄清楚的是,如何在函数外部执行此操作,从而以标题中的状态从函数返回字符串
函数randString(){
var char=“0123456789abcdefghijklmnopqrstuvxyz”,
fullchar=“0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”,
genHash=“”,
我
对于(i=0;i<8;i++){
var rnum=Math.floor(Math.random()*char.length)
返回genHash+=char.substring(rnum,rnum+1)
}
}
//创建一个新列表
$(“[data action=newlist]”)。在(“单击”,函数(){
随机字符串()
var newBtnList=$(“”{
文本:genHash,
标题:genHash,
类:“新建-”+genHash
}).appendTo(“[data action=列表树]”)。在(“单击”,函数(){
//显示活动编辑器
$(“+genHash).removeClass(“隐藏”)
})
})
新的
由于for
循环中的return
语句,您的randString()
函数只返回第一个随机字符。将其移动到的之后:
function randString() {
var char = "0123456789abcdefghijklmnopqrstuvwxyz",
fullchar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
genHash = "",
i;
for (i = 0; i < 8; i++) {
var rnum = Math.floor(Math.random() * char.length)
genHash += char.substring(rnum, rnum + 1)
}
return genHash;
}
还请注意,您可以在第二个单击处理程序中使用this
关键字来引用元素,而不是从genHash
字符串中构建选择器。试试这个:
$("[data-action=newlist]").on("click", function() {
var genHash = randString();
var newBtnList = $("<em>", {
text: genHash,
title: genHash,
class: "new-" + genHash + ' hide'
}).appendTo("[data-action=list-tree]").on("click", function() {
$(this).removeClass("hide")
})
});
$(“[data action=newlist]”)。在(“单击”,函数(){
var genHash=randString();
var newBtnList=$(“”{
文本:genHash,
标题:genHash,
类:“新建-”+genHash+“隐藏”
}).appendTo(“[data action=列表树]”)。在(“单击”,函数(){
$(this.removeClass(“隐藏”)
})
});
由于for
循环中的return
语句,您的randString()
函数只返回第一个随机字符。将其移动到
的之后:
function randString() {
var char = "0123456789abcdefghijklmnopqrstuvwxyz",
fullchar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
genHash = "",
i;
for (i = 0; i < 8; i++) {
var rnum = Math.floor(Math.random() * char.length)
genHash += char.substring(rnum, rnum + 1)
}
return genHash;
}
还请注意,您可以在第二个单击处理程序中使用this
关键字来引用元素,而不是从genHash
字符串中构建选择器。试试这个:
$("[data-action=newlist]").on("click", function() {
var genHash = randString();
var newBtnList = $("<em>", {
text: genHash,
title: genHash,
class: "new-" + genHash + ' hide'
}).appendTo("[data-action=list-tree]").on("click", function() {
$(this).removeClass("hide")
})
});
$(“[data action=newlist]”)。在(“单击”,函数(){
var genHash=randString();
var newBtnList=$(“”{
文本:genHash,
标题:genHash,
类:“新建-”+genHash+“隐藏”
}).appendTo(“[data action=列表树]”)。在(“单击”,函数(){
$(this.removeClass(“隐藏”)
})
});
尝试将函数的主循环更改为
for (i = 0; i < 8; i++) {
var rnum = Math.floor(Math.random() * char.length)
genHash += char.substring(rnum, rnum + 1)
}
return genHash;
在你的代码中
var genHash=randString()
是的,在类定义中删除“new-”。或者将“+genHash替换为“.new-”+genHash尝试将函数的主循环更改为
for (i = 0; i < 8; i++) {
var rnum = Math.floor(Math.random() * char.length)
genHash += char.substring(rnum, rnum + 1)
}
return genHash;
在你的代码中
var genHash=randString()
是的,在类定义中删除“new-”。或者将“+genHash替换为“.new-”+genHash您试图返回for循环中的genHash
变量值,该值不正确。只需在循环后返回genHash
变量值
试试这个
function randString() {
var char = "0123456789abcdefghijklmnopqrstuvwxyz",
fullchar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
genHash = "",
i;
for (i = 0; i < 8; i++) {
var rnum = Math.floor(Math.random() * char.length)
genHash += char.substring(rnum, rnum + 1)
}
return genHash ; //change here
}
函数randString(){
var char=“0123456789abcdefghijklmnopqrstuvxyz”,
fullchar=“0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”,
genHash=“”,
我
对于(i=0;i<8;i++){
var rnum=Math.floor(Math.random()*char.length)
genHash+=char.substring(rnum,rnum+1)
}
返回genHash;//在此处更改
}
您试图返回for循环中的genHash
变量值,这是不正确的。只需在循环后返回genHash
变量值
试试这个
function randString() {
var char = "0123456789abcdefghijklmnopqrstuvwxyz",
fullchar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
genHash = "",
i;
for (i = 0; i < 8; i++) {
var rnum = Math.floor(Math.random() * char.length)
genHash += char.substring(rnum, rnum + 1)
}
return genHash ; //change here
}
函数randString(){
var char=“0123456789abcdefghijklmnopqrstuvxyz”,
fullchar=“0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”,
genHash=“”,
我
对于(i=0;i<8;i++){
var rnum=Math.floor(Math.random()*char.length)
genHash+=char.substring(rnum,rnum+1)
}
返回genHash;//在此处更改
}
且OP未分配randString的返回值以执行任何操作,var genHash=randString()
且OP未分配randString的返回值以执行任何操作,var genHash=randString()