Javascript 为div id生成随机字符串
我想在我的网站上显示YouTube视频,但我需要能够为每个将由用户共享的视频添加唯一的Javascript 为div id生成随机字符串,javascript,Javascript,我想在我的网站上显示YouTube视频,但我需要能够为每个将由用户共享的视频添加唯一的id。所以我把这些放在一起,我遇到了一个小问题。我试图让JavaScript为divid添加一个随机字符串,但它不起作用,显示字符串: <script type='text/javascript' src='jwplayer.js'></script> <script type='text/javascript'> function randomString(length)
id
。所以我把这些放在一起,我遇到了一个小问题。我试图让JavaScript为divid
添加一个随机字符串,但它不起作用,显示字符串:
<script type='text/javascript' src='jwplayer.js'></script>
<script type='text/javascript'>
function randomString(length) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
if (! length) {
length = Math.floor(Math.random() * chars.length);
}
var str = '';
for (var i = 0; i < length; i++) {
str += chars[Math.floor(Math.random() * chars.length)];
}
return str;
}
var div = randomString(8);
</script>
<div id='div()'>This text will be replaced</div>
<script type='text/javascript'>
jwplayer('div()').setup({
'flashplayer': 'player.swf',
'file': 'http://www.youtube.com/watch?v=4AX0bi9GXXY',
'controlbar': 'bottom',
'width': '470',
'height': '320'
});
</script>
函数随机字符串(长度){
var chars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'。拆分(“”);
如果(!长度){
长度=Math.floor(Math.random()*chars.length);
}
var-str='';
对于(变量i=0;i
我非常喜欢这个功能:
function guidGenerator() {
var S4 = function() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
};
return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
来自2018年编辑:我认为这个答案有一些有趣的信息,但对于任何实际应用,你都应该使用。 在JavaScript中创建唯一ID的一种简单方法是使用Date对象:
var uniqid = Date.now();
这将给出自1970年1月1日以来经过的总毫秒数,这是每次调用该值时的唯一值
现在该值的问题是不能将其用作元素的ID,因为在HTML中,ID需要以字母字符开头。还有一个问题是,两个用户在完全相同的时间执行一个操作可能会导致相同的ID。我们可以通过在ID的数字部分之前添加一个随机字母来降低这种可能性,并解决字母字符问题
var randLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
var uniqid = randLetter + Date.now();
然而,这仍然有可能发生碰撞,尽管可能性很小。唯一id的最佳选择是保持一个运行计数,每次递增,然后在一个地方(即服务器上)执行所有操作。首先。为您的分区分配一个id。如下所示:
<div id="uniqueid">This text will be replaced</div>
我建议您从某种占位符开始,您可能已经有了这个占位符,但它可以在某个地方附加div
<div id="placeholder"></div>
可以将其添加到占位符中,如下所示:
document.getElementById('placeholder').appendChild(div);
然后,您可以在jwplayer代码中使用它:
jwplayer(rndId).setup(...);
实例:
旁注:我非常确定id必须以字母字符开头(即,没有数字)-您可能需要更改randomstring的实现以强制执行此规则。()我想这里的一些人没有真正关注你的问题。看起来你遇到的问题是把随机数放在页面上,然后把播放器连接到页面上。有很多方法可以做到这一点。最简单的方法是对现有代码进行一个小的更改,如document.write()将结果写入页面。我通常不推荐document.write(),但由于您的代码已经内联,并且您尝试的是将div内联,因此这是最简单的方法。在你有随机数的地方,你只需要用它把它和div放到页面中:
var randomId = "x" + randomString(8);
document.write('<div id="' + randomId + '">This text will be replaced</div>');
整个代码块如下所示:
jwplayer(randomId).setup({
<script type='text/javascript' src='jwplayer.js'></script>
<script type='text/javascript'>
function randomString(length) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghiklmnopqrstuvwxyz'.split('');
if (! length) {
length = Math.floor(Math.random() * chars.length);
}
var str = '';
for (var i = 0; i < length; i++) {
str += chars[Math.floor(Math.random() * chars.length)];
}
return str;
}
var randomId = "x" + randomString(8);
document.write('<div id="' + randomId + '">This text will be replaced</div>');
jwplayer(randomId).setup({
'flashplayer': 'player.swf',
'file': 'http://www.youtube.com/watch?v=4AX0bi9GXXY',
'controlbar': 'bottom',
'width': '470',
'height': '320'
});
</script>
var generateID = (function() {
var globalIdCounter = 0;
return function(baseStr) {
return(baseStr + globalIdCounter++);
}
})();
var randomId = generateID("myMovieContainer"); // "myMovieContainer1"
document.write('<div id="' + randomId + '">This text will be replaced</div>');
jwplayer(randomId).setup({
let div_id = randstr('youtube_div_');
然后,在实际应用中,你可以这样做:
jwplayer(randomId).setup({
<script type='text/javascript' src='jwplayer.js'></script>
<script type='text/javascript'>
function randomString(length) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghiklmnopqrstuvwxyz'.split('');
if (! length) {
length = Math.floor(Math.random() * chars.length);
}
var str = '';
for (var i = 0; i < length; i++) {
str += chars[Math.floor(Math.random() * chars.length)];
}
return str;
}
var randomId = "x" + randomString(8);
document.write('<div id="' + randomId + '">This text will be replaced</div>');
jwplayer(randomId).setup({
'flashplayer': 'player.swf',
'file': 'http://www.youtube.com/watch?v=4AX0bi9GXXY',
'controlbar': 'bottom',
'width': '470',
'height': '320'
});
</script>
var generateID = (function() {
var globalIdCounter = 0;
return function(baseStr) {
return(baseStr + globalIdCounter++);
}
})();
var randomId = generateID("myMovieContainer"); // "myMovieContainer1"
document.write('<div id="' + randomId + '">This text will be replaced</div>');
jwplayer(randomId).setup({
let div_id = randstr('youtube_div_');
var randomId=generateID(“myMovieContainer”);//“myMovieContainer1”
文件。书写(“本文本将被替换”);
jwplayer(randomId).设置({
@jfriend000版本的编辑版本:
/**
* Generates a random string
*
* @param int length_
* @return string
*/
function randomString(length_) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghiklmnopqrstuvwxyz'.split('');
if (typeof length_ !== "number") {
length_ = Math.floor(Math.random() * chars.length_);
}
var str = '';
for (var i = 0; i < length_; i++) {
str += chars[Math.floor(Math.random() * chars.length)];
}
return str;
}
/**
*生成一个随机字符串
*
*@param int length_
*@返回字符串
*/
函数随机化字符串(长度u1){
var chars='0123456789abcdefghijklmnopqrstuvxyzabdfghiklmnopqrstuvxyz'。拆分('';
if(长度类型?=“编号”){
长度=Math.floor(Math.random()*chars.length);
}
var-str='';
对于(变量i=0;i
基于,id应以字母开头:
ID和名称标记必须以字母([a-Za-z])开头,后面可以是任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“)、冒号(:”)和句点(“.”)
因此,解决方案之一可以是(字母数字):
另一种解决方案-仅生成包含字母的字符串:
var length = 9;
var id = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, length);
以下是生成随机ID的可重用函数:
function revisedRandId() {
return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(2, 10);
}
//它不会以任何数字开头,所以CSS3将支持它。我还需要一个随机id,我使用base64编码:
btoa(Math.random()).substring(0,12)
选择所需的字符数,结果通常至少为24个字符。window.btoa(String.fromCharCode(…window.crypto.getRandomValues(新的Uint8Array(5)))
使用ASCII字母、数字、'.'、'-'和'.'以外的字符可能会导致兼容性问题,因为它们在HTML 4中是不允许的。虽然HTML5中取消了此限制,但为了兼容性,ID应该以字母开头。我喜欢这个简单的:
function randstr(prefix)
{
return Math.random().toString(36).replace('0.',prefix || '');
}
由于id应该(尽管不是必须)以字母开头,我会这样使用它:
jwplayer(randomId).setup({
<script type='text/javascript' src='jwplayer.js'></script>
<script type='text/javascript'>
function randomString(length) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghiklmnopqrstuvwxyz'.split('');
if (! length) {
length = Math.floor(Math.random() * chars.length);
}
var str = '';
for (var i = 0; i < length; i++) {
str += chars[Math.floor(Math.random() * chars.length)];
}
return str;
}
var randomId = "x" + randomString(8);
document.write('<div id="' + randomId + '">This text will be replaced</div>');
jwplayer(randomId).setup({
'flashplayer': 'player.swf',
'file': 'http://www.youtube.com/watch?v=4AX0bi9GXXY',
'controlbar': 'bottom',
'width': '470',
'height': '320'
});
</script>
var generateID = (function() {
var globalIdCounter = 0;
return function(baseStr) {
return(baseStr + globalIdCounter++);
}
})();
var randomId = generateID("myMovieContainer"); // "myMovieContainer1"
document.write('<div id="' + randomId + '">This text will be replaced</div>');
jwplayer(randomId).setup({
let div_id = randstr('youtube_div_');
一些示例值:
youtube_div_4vvbgs01076
youtube_div_1rofi36hslx
youtube_div_i62wtpptnpo
youtube_div_rl4fc05xahs
youtube_div_jb9bu85go7
youtube_div_etmk8u7a3r9
youtube_div_7jrzty7x4ft
youtube_div_f41t3hxrxy
youtube_div_8822fmp5sc8
youtube_div_bv3a3flv425
或者你也可以使用Scripto,因为它已经内置了(除了IE11,我发誓这些家伙已经好几年没有更新了!)
var id=new uint32阵列(10);
window.crypto.getRandomValues(数组);
我还发现:
let length=32;
设id=crypto.randomBytes(长度).toString(“base64”);
有很多方法可以做到这一点,但对于大多数人来说,没有理由重新发明轮子:)我可以用一种简单直观的方法生成一个随机ID吗
const getRandomID=(长度:数字)=>{
让text='';
可能常数='ABCDEFGHIJKLMNOPQRSTUVXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789';
for(设i=0;i
也许这就是他