使元素更改它';使用javascript创建自己的内容

使元素更改它';使用javascript创建自己的内容,javascript,html,events,reference,Javascript,Html,Events,Reference,我试图让这个anchor元素在您单击它时更改其文本,但它就是不起作用 根据以下结构,所讨论的元素是表内一组其他锚的一部分: 桌子 划船 细胞→ 锚定 细胞→ 锚定 细胞→ 锚定 划船 细胞→ 锚定 细胞→ 锚定 细胞→ 锚定 划船 细胞→ 锚定 细胞→ 锚定 细胞→ 锚定 它由以下脚本填充: var initButtonAction=function(){ var table=document.getElementById(“表格”); var编号=document.getE

我试图让这个
anchor
元素在您单击它时更改其文本,但它就是不起作用

根据以下结构,所讨论的元素是表内一组其他锚的一部分:

  • 桌子
    • 划船
      • 细胞→ 锚定
      • 细胞→ 锚定
      • 细胞→ 锚定
    • 划船
      • 细胞→ 锚定
      • 细胞→ 锚定
      • 细胞→ 锚定
    • 划船
      • 细胞→ 锚定
      • 细胞→ 锚定
      • 细胞→ 锚定
它由以下脚本填充:

var initButtonAction=function(){
var table=document.getElementById(“表格”);
var编号=document.getElementById(“编号”);
var size=parseInt(number.value);
clearChildren(table);//我临时编写的一个函数,用于清除元素的内容
对于(变量i=0;i
问题是,当我单击任何锚点时,只有最后一个锚点会被更改,例如:

O
欧欧欧欧
欧欧欧欧
欧欧欧欧
欧欧欧欧
对此的更改:

O
欧欧欧欧
欧欧欧欧
欧欧欧欧
O 8
不管我按什么“O”

然而,我在另一个项目上也做了同样的事情(在事件侦听器函数中使用了相同的符号),它工作得非常好,代码如下:

var row=document.createElement('tr');
//创建并初始化其他元素
row.id='Product'+globalProductsIdCounter+'row';
//一些更无关的处理
opcAnchor.id='Product'+globalProductsIdCounter+'opcAnchor';
opcAnchor.href='#';
opcAnchor.addEventListener('click',function(){
ProductsTableBody.removeChild(世界其他地区);
},错
);
appendChild(document.createTextNode('(eliminar)');

为什么第一个示例不起作用?

只需在代码中做一点小改动。替换
anchor.appendChild(newValue)
this.appendChild(newValue)一起使用。请注意,锚点变量将保存迭代后的最后一个元素

anchor.addEventListener("click", function(e) {
       var newValue = document.createTextNode(parseInt(Math.random()*10)+1);
       clearChildren(anchor); 
       this.appendChild(newValue);
       e.preventDefault();
}, false);

在您的第一个代码段中,您需要创建一个闭包:
(函数(锚点){anchor.addEventListener(…)})(锚点)在你的第二个代码片段中,你不在一个循环中,
opcAnchor
不会改变,你是安全的。虽然这肯定是解决问题的最好办法(如果你没有错过
clearChildren(anchor)
:P中的
锚定,这将是最好的办法),OP问到“为什么第一个例子不起作用?”:)我想说,传授闭包的乐趣和陷阱比解决眼前的问题更重要。谢谢你,@Amadan,这就是我非常喜欢这个社区的原因:信息。但我也赞赏吉尔沙对这一问题的态度。谢谢你们。哦,不用担心。我对Gilsha的答案投了赞成票,因为这正是您的代码所需要的。不过你需要的是重复的问题链接。没错,我想如果不先问一下,我就无法找出问题所在,或者我可能已经花了很多天来研究它了。再次感谢你!