JavaScript: 未更新变量的动态值。为什么会这样?
JavaScript: Dynamic value of a variable isn't being updated. Why is that happenning?
我最近开始学习 JavaScript 和 jQuery,我可能会遇到新手错误。我试图让我的代码尽可能易于阅读,所以我决定存储一大块 HTML 与另一个变量中的一个变量连接。串联变量包含一个数值,每次我使用包含所有内容的变量 html 和另一个变量时都会更新该数值。
像这样:
var variableA = 1;
var variableB = "<h4>Header number : "+ variableA +"</h4>";
var addHeader = funtcion(){
$('#mainDiv').prepend(variableB);
variableA++;
};
每当我稍后在代码中调用该函数时,它总是打印 "Header number 1",我怎样才能让它打印 correct/desired 值?
Header数1
Header数2
Header数3
variableB第一次存储后是字符串,更新variableA不会更新。解决问题,每次调用函数时生成variableB:
var variableA = 1;
var addHeader = funtcion(){
var variableB = "<h4>Header number : "+ variableA +"</h4>";
$('#mainDiv').prepend(variableB);
variableA++;
};
如果你想让它在每次调用时都重复,你可以试试这个:
var headerIndex = 1;
var addHeader = function(){
$('#mainDiv').prepend("<h4>Header number: " + (headerIndex++) + "</h4>");
};
示例:http://codepen.io/anon/pen/OyJpQq
您可能希望使用 $('#mainDiv').html(...)
而不是 prepend(...)
来让它完全更新 div 的内容...
变量为字符串时的问题。它不是引用,所以在你的函数中使用 var variableB = "<h4>Header number : "+ variableA +"</h4>";
来在每次函数调用时创建新字符串
将您的变量移到函数内部,如下所示:
var variableA = 1;
var variableB = "<h4>Header will be replaced</h4>";
$('#mainDiv').html(variableB);
$('#button').click(function(){
addHeader();
});
function addHeader(){
variableB = "<h4>Header number : "+ variableA +"</h4>";
$('#mainDiv').html(variableB);
variableA++;
}
和HTML:
<div id="mainDiv"> </div>
<button id="button">clicky</button>
在这里试一试:
http://jsfiddle.net/66rgnd0k/
我最近开始学习 JavaScript 和 jQuery,我可能会遇到新手错误。我试图让我的代码尽可能易于阅读,所以我决定存储一大块 HTML 与另一个变量中的一个变量连接。串联变量包含一个数值,每次我使用包含所有内容的变量 html 和另一个变量时都会更新该数值。
像这样:
var variableA = 1;
var variableB = "<h4>Header number : "+ variableA +"</h4>";
var addHeader = funtcion(){
$('#mainDiv').prepend(variableB);
variableA++;
};
每当我稍后在代码中调用该函数时,它总是打印 "Header number 1",我怎样才能让它打印 correct/desired 值?
Header数1
Header数2
Header数3
variableB第一次存储后是字符串,更新variableA不会更新。解决问题,每次调用函数时生成variableB:
var variableA = 1;
var addHeader = funtcion(){
var variableB = "<h4>Header number : "+ variableA +"</h4>";
$('#mainDiv').prepend(variableB);
variableA++;
};
如果你想让它在每次调用时都重复,你可以试试这个:
var headerIndex = 1;
var addHeader = function(){
$('#mainDiv').prepend("<h4>Header number: " + (headerIndex++) + "</h4>");
};
示例:http://codepen.io/anon/pen/OyJpQq
您可能希望使用 $('#mainDiv').html(...)
而不是 prepend(...)
来让它完全更新 div 的内容...
变量为字符串时的问题。它不是引用,所以在你的函数中使用 var variableB = "<h4>Header number : "+ variableA +"</h4>";
来在每次函数调用时创建新字符串
将您的变量移到函数内部,如下所示:
var variableA = 1;
var variableB = "<h4>Header will be replaced</h4>";
$('#mainDiv').html(variableB);
$('#button').click(function(){
addHeader();
});
function addHeader(){
variableB = "<h4>Header number : "+ variableA +"</h4>";
$('#mainDiv').html(variableB);
variableA++;
}
和HTML:
<div id="mainDiv"> </div>
<button id="button">clicky</button>
在这里试一试:
http://jsfiddle.net/66rgnd0k/