我需要增加add function
中的变量计数,该变量在用户点击按钮时有效。我知道如果我以某种方式声明此函数外的var count
,然后将count++
置于每次用户单击按钮时它都具有新值,就可以完成,但您可以在我的代码中看到我需要它要在里面宣布。
因此,对于每个索引(例如:1,2,3 ......),var count
应该单独工作,并且仅在该函数下递增。
问题在于,无论何时用户点击按钮,它都会返回到第一行中的var c,并且增量功能不起作用:(
<script type="text/javascript">
function add(index) {
var count = document.getElementById("A"+index).innerHTML;
count = parseInt(count);
count++;
var textarea = document.createElement("textarea");
textarea.name = "txt" + index + count;
var div = document.createElement("div");
div.innerHTML = textarea.outerHTML;
document.getElementById("inner"+index).appendChild(div);
}
</script>
例如:当index为2且var c从div获得数字3时,以下textarea名称应为 - &gt; txt24,txt25,txt26等...
答案 0 :(得分:1)
让我们用#34;字典&#34;用于存储每个父元素的计数,并让它保持在add()
函数之外:
var elementCounts = {};
现在让我们调整add()
方法,如果它不存在则将初始计数放在此对象中,如果存在则更新它。然后,您可以在后续调用中读取和增加对象中的值:
function add(index) {
// build a key based on the index
var key = 'A' + index;
// Check if the key (property) exists in our dictionary (object)
if (key in elementCounts) {
// it's there, increment the count
elementCounts[key]++;
} else {
// it's not there, let's add it and start it at 1
elementCounts[key] = 1;
}
var textarea = document.createElement("textarea");
// in this line, simply access the current count from the dictionary
textarea.name = "txt" + index + elementCounts[key];
// and the rest of the code remains the same
var div = document.createElement("div");
div.innerHTML = textarea.outerHTML;
document.getElementById("inner" + index).appendChild(div);
}
答案 1 :(得分:0)
您可以将数据保存在任何var中,例如按钮本身: - )
<!DOCTYPE html>
<html lang="en">
<head>
<title> Bla! </title>
<script type='text/javascript'>
function Count(obj) {
if (! obj.data) obj.data = 0;
obj.data++;
var div = document.createElement('div');
div.id = 'id_' + obj.data;
div.innerHTML = "This is Number:" + obj.data;
document.getElementById('containerDiv').appendChild(div);
}
</script>
</head>
<body>
<button onclick='Count(this)'> Click to count </button>
<div id='containerDiv'>
</div>
</body>
</html>