我正在尝试使用随机生成的附加变量生成自定义网址。
实施例:
http://example.com/page1234.jsp?id=LOCATION_ID&user=USER_NAME&pass=PASSWORD
我很好,所有的变量数据都是数字的,并且一直试图用它来生成随机数:
<p>Click the button to join.</p>
<button onclick="genID5()">Join</button>
<p id="generateID1"></p><p id="generateID2"></p><p id="generateID3"></p>
<script>
function genIDA() {
var x = Math.floor((Math.random() * 1000000000000) + 101);
document.getElementById("generateID1").innerHTML = x;
console.log(x);
}
function genIDB() {
var y = Math.floor((Math.random() * 1000000000000) + 101);
document.getElementById("generateID2").innerHTML = y;
console.log(y);
}
function genIDC() {
var z = Math.floor((Math.random() * 1000000000000) + 101);
document.getElementById("generateID3").innerHTML = z;
console.log(z);
}
function genID5() {
genIDA();
genIDB();
genIDC();
}
</script>
我收到一些不错的大随机数,然后我尝试用它来附加网址:
function genURL() {
document.action = window.location.href = "http://example.com/page1234.jsp?id=" + X + &user= y + &pass= + z;
return true;
}
URL函数主要用于将其推送到Window对象,然后转到该URL - 但是要插入var值会给我一个问题。
我不确定是不是因为它们没有嵌套,但是我得到了未定义的错误。最终我不需要/希望用户看到数字,如果页面加载并执行到脚本并加载了目标,那也没关系。我想看看HTML和控制台之间的输出差异,并且让按钮执行它有助于我看到步骤。
答案 0 :(得分:0)
有一些问题。存储随机数的变量位于本地范围内 - 在定义它们的函数之外,它们是不可访问的。
function setVar() {
var foo = 'bar';
}
setVar();
console.log( foo ); // undefined
你可以通过首先在全局范围内声明变量来解决这个问题:
var foo;
function setVar() {
foo = 'bar';
}
setVar();
console.log( foo ); // 'bar'
请注意,如果在函数中使用var
关键字,它将创建一个同名的新局部变量。
var foo;
function setVar() {
var foo = 'bar';
}
setVar();
console.log( foo ); // undefined
在将事物放在全局范围内时要小心,因为这些变量可以从页面上执行的任何脚本访问,并且有时可能会遇到您(或执行脚本的人)发现变量&#的情况。 39; s值意外地改变了。这可能不是出于您的目的所必需的,但我的偏好是在函数或对象中包装这样的东西,并创建一个伪类(Javascript还没有真正的类)。如果您想了解更多here's另一个答案,可以帮助您入门。
您遇到的第二个问题是您的genURL()
功能。您的报价是不平衡的,您的变量是字符串的一部分。
var x = 1, y = 2, z = 3;
console.log("Variables: x + , + y + , + z"); // 'Variables: x + , + y + , + z'
console.log("Variables: " + x + "," + y + "," + z); // 'Variables: 1,2,3'
答案 1 :(得分:0)
好的,所以我想出来了......感谢@Grinde - 我添加了全局var调用,然后想出如何将它们注入到URL字符串中......
这是最终的脚本代码,地址已更改以保护无辜者......
var firstName;
function genFirst() {
firstName = Math.floor((Math.random() * 1000000000000) + 13579);
document.innerHTML = firstName;
console.log(firstName);
}
var lastName;
function genLast() {
lastName = Math.floor((Math.random() * 1000000000000) + 111);
document.innerHTML = lastName;
console.log(lastName);
}
var email;
function genEmail() {
email = Math.floor((Math.random() * 1000000000000) + 10101);
document.innerHTML = email;
console.log(email);
}
function genURL() {
document.action = window.location.href = "http://domain.com/log_thru.jsp?eid=12345&seid=101" + "&email=" + [email] + "@fakemailacct.com" "&first_name=" + [firstName] + "&last_name=" + [lastName];
return false;
}
function genID() {
genFirst()
genLast()
genEmail()
}
genID()
然后使用以下HTML调用它:
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
</head>
<body>
<script src="app2.js"></script>
<p>Click the button to join the event.</p>
<button onclick="genURL()">Join</button>
</body>
</html>
感谢那些贡献并提供指导的人们!