1

我正在尝试制作一个锚点切换功能,该功能在单击时将数据附加到 textarea 并在重新单击时删除。这是jsfiddle

`

function btnsInit()
{
  var i, a = document.getElementById('btns').getElementsByTagName('a');
  for (i = 0; i < a.length; ++i) 
 {
     var str=document.getElementById('ta').value; 
     var index= str.indexOf(a[i]);
     if(index!=-1)
    {
    a[i].onclick = btnClick;
    }
     else
    {
    str.replace(a[i],"_");
        }
  }
}
function btnClick(e)
{ 

  document.getElementById('ta').value += this.firstChild.nodeValue + ',';
  xPreventDefault(e);
  return false;
}

`请尽快回复

4

1 回答 1

0

这是新的js代码,您可以使用它-

<div id='btns'>
        <p>
            <!-- adding id to element, helps to maintain the list
            of element which have been clicked, and also helps in
             distinguishing between two elements have same text. 
            Dont forget to add href="#' or href="javascript:void(0)"
             else your page may refresh and form data will be lost -->

            <a id="a1" href='#'>category</a>

        </p>
        <p>
            <a id="a2" href='#'>url</a>

        </p>
    </div>
<textarea id='ta' rows='10' cols='20'></textarea></body>

Javascript -

window.onload = btnsInit;

var selected = {};//keeps list of selected links

function btnsInit() {
    var i, a = document.getElementById('btns').getElementsByTagName('a');
    for (i = 0; i < a.length; ++i) {
        a[i].onclick = btnClick;
    }
}

function btnClick(e) {
    if (selected[this.id]) {
        delete selected[this.id];//deleting if already been clicked
    } else {
        selected[this.id] = this.innerHTML;//adding to the selected list
    }
    updateTextArea();

    xPreventDefault(e);
    return false;
}

function updateTextArea() {
    var ta = document.getElementById('ta');
    var val = "";
    for ( var id in selected) {
        val += selected[id] + ",";
    }
    ta.value = val;//updating from selected list
}

function xPreventDefault(e) {
    if (e && e.preventDefault)
        e.preventDefault();
    else if (window.event)
        window.event.returnValue = false;
}

您的代码有问题 -

  • btnsInit实际上并没有将 onclick 侦听器分配给<a>元素。
  • 重新单击链接未处理或未正确处理(如果已处理)。
  • 为刷新页面href=' '的标签使用属性/值。a

更新 - 评论中提出的问题

  • 我的代码在刷新页面时是否不起作用?

    不,那不是。它缺少重新点击处理并且btnsInit无法正常工作。

  • 删除是预定义的功能吗?

    delete是一个 JavaScript 关键字,用于删除对象属性。
    关于删除关键字

  • “这”有什么用?

    this是另一个关键字,它在上下文中保存对象的引用,在这种情况下,它保存单击的元素。 有关此关键字的更多信息

于 2013-08-17T19:37:50.720 回答