如何select随机关键字?
how to select random keyword?
我对这段代码有一个问题。它 select 是前三个关键字。如果我想 select 随机数中的关键字怎么办?目前,它有 7 个关键字,select 是前三个。如果我想 select 关键字 3,6,7 怎么办。我怎样才能在这里做随机函数?
(function($) {
$.fn.replacetext = function (target, replacement, max) {
var limit = max || -1;
var $textNodes = this
.find("*")
.andSelf()
.contents()
.filter(function () {
return this.nodeType === 3 && !$(this).parent("a").length;
});
$textNodes.each(function (index, element) {
var $element = $(element);
var words = $element.text().split(/\b/);
var matches = 0;
var text = words.map(function (word, index) {
if (matches >= limit) {
return word;
}
if (word.match(target)) {
++matches;
return word.replace(target, replacement);
}
return word;
});
$element.replaceWith(text.join(''));
});
};
})(jQuery);
$("p").replacetext(/\bdress\b/gi, "<a href='http://www.google.com'>$&</a>", 3);
您可以通过以下方式实现以下行为:
在循环查找文本节点时,使用以下代码查找每个文本节点中的最大随机数:
var ranMax = $element.text().match(target).length
然后generate a set of random number在以下范围之间(1到最大随机数)
var arr = []
while (arr.length < max) {
var randomnumber = Math.ceil(Math.random() * ranMax)
var found = false;
for (var i = 0; i < arr.length; i++) {
if (arr[i] == randomnumber) {
found = true;
break
}
}
if (!found) arr[arr.length] = randomnumber;
}
检查匹配索引是否在随机数集合中,replace the value,否则return原始值。
var nth = 0;
value = value.replace(target, function (match, i, original) {
nth++;
return jQuery.inArray(nth, arr) > -1 ?
match.replace(target, replacement) :
match;
});
按照上述步骤,您可能会达到预期的效果。
工作示例,请参考以下fiddle:http://jsfiddle.net/zeskysee/14xjw4dr/2/
希望对您有所帮助 :D
我对这段代码有一个问题。它 select 是前三个关键字。如果我想 select 随机数中的关键字怎么办?目前,它有 7 个关键字,select 是前三个。如果我想 select 关键字 3,6,7 怎么办。我怎样才能在这里做随机函数?
(function($) {
$.fn.replacetext = function (target, replacement, max) {
var limit = max || -1;
var $textNodes = this
.find("*")
.andSelf()
.contents()
.filter(function () {
return this.nodeType === 3 && !$(this).parent("a").length;
});
$textNodes.each(function (index, element) {
var $element = $(element);
var words = $element.text().split(/\b/);
var matches = 0;
var text = words.map(function (word, index) {
if (matches >= limit) {
return word;
}
if (word.match(target)) {
++matches;
return word.replace(target, replacement);
}
return word;
});
$element.replaceWith(text.join(''));
});
};
})(jQuery);
$("p").replacetext(/\bdress\b/gi, "<a href='http://www.google.com'>$&</a>", 3);
您可以通过以下方式实现以下行为:
在循环查找文本节点时,使用以下代码查找每个文本节点中的最大随机数:
var ranMax = $element.text().match(target).length
然后generate a set of random number在以下范围之间(1到最大随机数)
var arr = []
while (arr.length < max) {
var randomnumber = Math.ceil(Math.random() * ranMax)
var found = false;
for (var i = 0; i < arr.length; i++) {
if (arr[i] == randomnumber) {
found = true;
break
}
}
if (!found) arr[arr.length] = randomnumber;
}
检查匹配索引是否在随机数集合中,replace the value,否则return原始值。
var nth = 0;
value = value.replace(target, function (match, i, original) {
nth++;
return jQuery.inArray(nth, arr) > -1 ?
match.replace(target, replacement) :
match;
});
按照上述步骤,您可能会达到预期的效果。
工作示例,请参考以下fiddle:http://jsfiddle.net/zeskysee/14xjw4dr/2/
希望对您有所帮助 :D