如何在一个函数内增加JavaScript getElementById变量?

时间:2014-03-31 18:48:09

标签: javascript html dom

我需要增加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等...

2 个答案:

答案 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>