使用单击的span标记的innerHTML替换占位符值

时间:2014-12-11 17:36:30

标签: javascript arrays loops innerhtml

我希望在我的页面上有一个隐藏的搜索表单,以允许用户在onclick上过滤标签。我想我是从正确的轨道开始的,但我可能已经掉到了兔子洞里。

到目前为止,我可以替换表单中的值,但我不知道如何运行循环,以便它只返回被单击的项的innerHTML。它目前贯穿所有选项并在最后停止。

非常感谢任何帮助。

以下是标签的内容:

<div id="tagLinks" class="tags" >
    <span class="clickable" onclick="getValue();">Social Media</span>,   
    <span class="clickable" onclick="getValue();">Business</span>, 
    <span class="clickable" onclick="getValue();">Content</span>, 
    <span class="clickable" onclick="getValue();">Marketing</span>, 
    <span class="clickable" onclick="getValue();">Engagement</span>, 
    <span class="clickable" onclick="getValue();">Facebook</span>, 
    <span class="clickable" onclick="getValue();">Twitter</span>, 
    <span class="clickable" onclick="getValue();">Google Plus</span>
</div>

这是我的javascript:         $(document).ready(function(){

    var tagArray = document.getElementById("tagLinks").innerText.split(', ');
    var spanObj; 
    tagArray.forEach(createElement);

    function createElement(arrayItem, index, array) {
        spanObj = "<span class='clickable' onclick='getValue();'>" + arrayItem + "</span>";
        tagArray[index] = spanObj.toString();
        document.getElementById("tagLinks").innerText = "";
        $("#tagLinks").append(tagArray.join(", "));
        $('#tagLinks').css('cursor','pointer');

    }
  function getValue() {        

    var value = document.getElementById('tagInput').value;
    var newValues = document.getElementsByClassName('clickable');

            for(var i=0; i < newValues.length; i++) {
               document.getElementById('tagInput').value =  newValues[i].innerHTML;     
            }
    } 

2 个答案:

答案 0 :(得分:3)

摆脱onclick,你正在使用jQuery,所以使用它。

$("#tagLinks").on("click", "span.clickable", function() {
    $('#tagInput').val(this.innerHTML); 
});

答案 1 :(得分:0)

正如@epascarello所说,如果你使用的是jquery,你应该正确使用它。

无论如何,这是一个纯粹的javascript答案:

function getValue() {        

    var value = document.getElementById('tagInput').value;
    var newValues = document.getElementsByClassName('clickable');

            for(var i=0; i < newValues.length; i++) {
                document.getElementById('tagInput').setAttribute("src","newValues[i].innerHTML");     
            }
    } 

Related Docs