Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从函数返回字符串(不带Eval)_Javascript_Jquery_String_Return - Fatal编程技术网

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()