变量变成另一个变量变得“未定义”
Variable into another variable getting “undefined”
在此代码中,变量 "link" 给出 "undefined"。我不知道是什么原因。这是我的代码:
HTML,第一次尝试:
<html>
<head>
<meta charset="utf-8" />
<script src="js.js"></script>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<p><a onclick="doSom()">Click here!</a></p>
</body>
</html>
JavaScript(带 jQuery),第一次尝试:
var link;
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(){
link="http://www.google.com";
$('p').html(testing);
}
HTML,第二次尝试:
<html>
<head>
<meta charset="utf-8" />
<script src="js.js"></script>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<p><a onclick="doSom('www.google.com.br')">Click here!</a></p>
</body>
</html>
JavaScript(带 jQuery),第二次尝试:
var link;
var testando="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(link){
$('p').html(testing);
}
变量 "link" 没有在上面的代码中给出它的值,仍然是 "undefined"。
这是有效的初始代码(但我正在对其进行优化):
HTML 从第一次尝试开始;
JavaScript(带 jQuery):
var link;
var testingi="Testing this <a href='";
var testingii="'>variable</a> here.";
function doSom(link){
$('p').html(testingi+link+testingii);
}
我觉得完全没有必要为了一句话声明2个变量
您在 link 具有值之前添加它,因此未定义。之后定义字符串。
看这里:
var link;
---- this is empty at definition !!! var testing="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(){
link="http://www.google.com";
$('p').html(testing);
}
这样做:
var link;
var testing;
function doSom(){
link="http://www.google.com";
testing ="Testing this <a href=\""+link+"\">variable</a> here.";
$('p').html(testing);
}
您的问题归结为您在 初始化 [=20= 之前尝试 使用 link
变量]它。
var link; // By default, this is `undefined`
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
// Your `testing` link will now contain the string `undefined`
function doSom(){
link="http://www.google.com";
// Since you don't update `testing` it still has "undefined" in it somewhere
$('p').html(testing);
}
解决方案:等到 testing
link 初始化 link
变量后再构建。
对于您的代码 "tentativa 1",link 未定义的原因是您在为 link 赋值之前将其插入到字符串测试中。
改变
var link;
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(){
link="http://www.google.com";
$('p').html(testing);
}
至
var link;
function doSom(){
link="http://www.google.com";
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
$('p').html(testing);
}
它会起作用。
与“第二次尝试”相同。移动您的字符串定义以进行测试(并将其重命名为正确),它应该可以正常工作。
我猜 "JavaScript (w/ jQuery):" 没问题。
你是对的,不过,你不需要定义那些变量。这不是它在最后一个例子中正常工作的原因。这是因为你在定义后引用'link'。
更好的方法(避免定义无用的变量并在定义后引用 'link' 是将您的 html 赋值更改为如下所示:
link="http://www.google.com";
$('p').html("Testing this <a href=\""+link+"\">variable</a> here.");
您的主要收获应该是将变量放入字符串中不会保留对该变量的引用。变量在包含到字符串中时的值是最终值。在为它赋值之前,不得将其包含在最终的字符串赋值中。
在此代码中,变量 "link" 给出 "undefined"。我不知道是什么原因。这是我的代码:
HTML,第一次尝试:
<html>
<head>
<meta charset="utf-8" />
<script src="js.js"></script>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<p><a onclick="doSom()">Click here!</a></p>
</body>
</html>
JavaScript(带 jQuery),第一次尝试:
var link;
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(){
link="http://www.google.com";
$('p').html(testing);
}
HTML,第二次尝试:
<html>
<head>
<meta charset="utf-8" />
<script src="js.js"></script>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<p><a onclick="doSom('www.google.com.br')">Click here!</a></p>
</body>
</html>
JavaScript(带 jQuery),第二次尝试:
var link;
var testando="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(link){
$('p').html(testing);
}
变量 "link" 没有在上面的代码中给出它的值,仍然是 "undefined"。
这是有效的初始代码(但我正在对其进行优化):
HTML 从第一次尝试开始;
JavaScript(带 jQuery):
var link;
var testingi="Testing this <a href='";
var testingii="'>variable</a> here.";
function doSom(link){
$('p').html(testingi+link+testingii);
}
我觉得完全没有必要为了一句话声明2个变量
您在 link 具有值之前添加它,因此未定义。之后定义字符串。
看这里:
var link;
---- this is empty at definition !!! var testing="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(){
link="http://www.google.com";
$('p').html(testing);
}
这样做:
var link;
var testing;
function doSom(){
link="http://www.google.com";
testing ="Testing this <a href=\""+link+"\">variable</a> here.";
$('p').html(testing);
}
您的问题归结为您在 初始化 [=20= 之前尝试 使用 link
变量]它。
var link; // By default, this is `undefined`
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
// Your `testing` link will now contain the string `undefined`
function doSom(){
link="http://www.google.com";
// Since you don't update `testing` it still has "undefined" in it somewhere
$('p').html(testing);
}
解决方案:等到 testing
link 初始化 link
变量后再构建。
对于您的代码 "tentativa 1",link 未定义的原因是您在为 link 赋值之前将其插入到字符串测试中。
改变
var link;
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(){
link="http://www.google.com";
$('p').html(testing);
}
至
var link;
function doSom(){
link="http://www.google.com";
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
$('p').html(testing);
}
它会起作用。
与“第二次尝试”相同。移动您的字符串定义以进行测试(并将其重命名为正确),它应该可以正常工作。
我猜 "JavaScript (w/ jQuery):" 没问题。
你是对的,不过,你不需要定义那些变量。这不是它在最后一个例子中正常工作的原因。这是因为你在定义后引用'link'。
更好的方法(避免定义无用的变量并在定义后引用 'link' 是将您的 html 赋值更改为如下所示:
link="http://www.google.com";
$('p').html("Testing this <a href=\""+link+"\">variable</a> here.");
您的主要收获应该是将变量放入字符串中不会保留对该变量的引用。变量在包含到字符串中时的值是最终值。在为它赋值之前,不得将其包含在最终的字符串赋值中。