javascript - 使用 jQuery 重置每个实例的随机字符串

标签 javascript jquery

我正在生成一系列随机字符,这些字符将添加到隐藏字符之后。我还包含了用于隐藏原始消息的脚本。

我似乎无法弄清楚如何“重置”每次使用的随机字符串。当前返回的是每个实例的相同字符串。我想在每个隐藏字符后插入一个随机字符串。

我做错了什么?

var message = "A random message with each character hidden in a span tag."

$(function() {  
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+,./?";
  var string_length = Math.ceil(Math.random() * 10) + 19;
  var randomstring = '';
  for (var i=0; i<string_length; i++) {
    var rnum = Math.floor(Math.random() * chars.length);
    randomstring += chars.substring(rnum,rnum+1);
  };

  $('body')
    .html(message)
    .children()
    .andSelf()
    .contents()
    .each(function(){
       var $this = $(this);
       $this.replaceWith($this.text().replace(/[A-Za-z0-9., ]/g, "<span hidden>$&</span>" + randomstring));
       console.log(randomstring);
       console.log(randomstring);
    });   
});

最佳答案

尝试使 randomstring 成为一个函数而不仅仅是一个变量。

var message = "A random message with each character hidden in a span tag."
function randomstring() {
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+,./?";
  var string_length = Math.ceil(Math.random() * 10) + 19;
  var result= '';
  for (var i=0; i<string_length; i++) {
    var rnum = Math.floor(Math.random() * chars.length);
    result+= chars.substring(rnum,rnum+1);
  };
  return result;
}

$(function() {   
  $('body')
    .html(message)
    .children()
    .andSelf()
    .contents()
    .each(function(){
      var $this = $(this);
      $this.replaceWith($this.text().replace(/[A-Za-z0-9., ]/g, "<span hidden>$&</span>" + randomstring()));
      console.log(randomstring());
      console.log(randomstring());
    });   
});

关于javascript - 使用 jQuery 重置每个实例的随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856633/

相关文章:

javascript - 如何在javascript中不重复地随机生成数字?

javascript - 如何隐藏/显示从 PHP 生成代码的 HTML 元素的可见性?

javascript - AJAX 请求的安全性

jquery - JS 更改菜单类在 IE 8 中不起作用

javascript - 如何将页面特定的js注入(inject)_Layout

javascript - 如何解决异步函数中的 promise ?

javascript - CasperJS数据不出现

jquery - 无法在 TreeView 中从 Font Awesome 切换类

javascript - jQuery scrollTop() 在移动浏览器上滚动 DIV 时不起作用,替代方案?

javascript - 为什么主干 View 会触发更改事件两次?