通过 JavaScript 设置锚标签的 innerHTML

Posted

技术标签:

【中文标题】通过 JavaScript 设置锚标签的 innerHTML【英文标题】:Setting the innerHTML of an anchor tag through JavaScript 【发布时间】:2012-03-29 18:18:32 【问题描述】:

我在 ASP.NET 页面上有一个锚标记,我希望通过 javascript 使用从 Web 服务检索的整数填充其文本(内部 html)。

我使用以下方法进行了尝试:

HTML:

<script type="text/javascript">
    $(function () 
        GetEntityCount([ domId: document.getElementById("entityCountIndicator")]);
    );
</script>

<a id="entityCountIndicator"></a>

JavaScript:

function GetEntityCount(domId) 
    $.ajax(
        type: 'POST',
        url: webServiceProxy + '/GetEntityCount',
        cache: true,
        success: function (xml)  GotEntityCount($(xml).text(), domId); 
    );


function GotEntityCount(entityCount, domElement) 
    if (isNaN(entityCount)) return;
    domElement.innerHTML = entityCount.toString();

但它不起作用。

在检查了 FireBug 中的变量并进行了一些实验后,我设法通过将设置 innerHTML 的行更改为:

domElement[0].domId.innerHTML = entityCount.toString();

这似乎可以解决问题,但我不知道它为什么起作用或这里发生了什么。

为什么 document.getElementById("entityCountIndicator") 调用显然返回一个数组,而不是单个元素?为什么我必须探测该数组的第一个元素并在其 domId 属性上设置 innerHTML?

【问题讨论】:

看起来您正在将一个数组传递给 GetEntityCount 方法。我想 javascript 是这样解释的:我不是 javascript 专家。 【参考方案1】:

因为你正在传递一个数组

[ domId: document.getElementById("entityCountIndicator")]

【讨论】:

啊,原来如此!非常感谢。【参考方案2】:

你的代码不可能工作,因为:

您传递一个数组作为您的第一个参数 (GetEntityCount([ domId: document.getElementById("entityCountIndicator")]);),但接下来尝试从第二个元素 (domElement) 编写 innerHTML 为什么要将数组内的对象作为 domElement 传递,而不仅仅是像这样的元素:GetEntityCount(0,document.getElementById("entityCountIndicator")); 在这里您似乎只传递了一个 id,而不是一个 dom 元素: GotEntityCount($(xml).text(), domId);

编辑:我想我回答的时间太长了,没关系。

【讨论】:

谢谢你的回答,大卫。我的错误是在没有真正理解它在做什么的情况下从其他地方“借用”一些代码。原来的代码传入一个数组,而我的代码不需要。

以上是关于通过 JavaScript 设置锚标签的 innerHTML的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 vue.js 忽略锚标签?

避免固定标题的锚标签[重复]

javascript 锚标签链接光滑滚动

如何使用Javascript选择具有特定文本内容的所有锚标签? [重复]

A标签执行js 代码和跳转

带有Javascript onclick事件的HTML锚标记