【问题标题】:How to hide an <a href> tag in InnerHTML如何在 InnerHTML 中隐藏 <a href> 标记
【发布时间】:2013-02-07 11:07:47
【问题描述】:

我有一个图像,它在 .cs 文件中定义了“a href”标记的 InnerHTML,如下所示。

_divToolTipContainer.InnerHtml = "<a href=\"javascript:__doPostBack('" + btnItemThumbnail.ClientID.Replace("_", "$") + "','')\">" +
                                           itemimage;

现在我想要的是让这个“a href”标签“隐藏”或“设置为 false”如果文本框是空的,否则有这个可点击的。

我的代码如下所示,但它不起作用。

    var oDivA1 = document.getElementById(oElementId);

    if(val === undefined || val == null || val.length <= 0){        
        oDivA1.style.display = "none"; // not working
    }else{
        oDivA1.style.display = "block"; // not working
    }

oDivA1.style.display = "none",这对整个 div 不显示任何内容,而不仅仅是“a href”标签。

这可能吗?

谢谢

RJ

【问题讨论】:

  • 你没有关闭你的锚标签,至少,不是你显示的代码。
  • innerHTML javascript 方法不应大写,但单词 HTML 需要大写。

标签: javascript


【解决方案1】:

使用 firstChild 属性获取 div 的内部元素,假设它包含的所有 HTML 如您的示例所示。

var oDivA1 = document.getElementById(oElementId);
var anchor = oDivA1 ? oDivA1.firstChild : null;

if(anchor && (val === undefined || val == null || val.length <= 0)){        
    anchor.style.display = "none";
}else{
    anchor.style.display = "block";
}

防止链接动作

var handler = function(e) { e.preventDefault(); };

if(anchor && (val === undefined || val == null || val.length <= 0)){        
    anchor.addEventListener('click',handler,false);
}else{
    anchor.removeEventListener('click',handler,false);
}

请参阅https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener,了解有关旧版浏览器的浏览器兼容性和解决方法的信息。

【讨论】:

  • 注意 - 这在很大程度上取决于您显示的确切标记,如果您将标记更改为包含空格,则可能还取决于浏览器。您可能想使用 jQuery 等框架进行调查以帮助解决此问题。
  • 它工作正常,但整个图像消失了。我只是想让 a href 像这样不可点击......有更好的方法吗?谢谢
  • @user1306165 - 是的,您可以添加一个单击处理程序来阻止默认操作,或者如果效果是永久性的,您可以删除锚标记并将 div 的内容替换为锚标记的 innerHTML .
  • 怎么样?这是我第一次这样做...... waaaaaaaaa :(
  • @user1306165 - 更新了示例,但真正考虑使用 jQuery 以获得更好的跨浏览器解决方案。
猜你喜欢
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
相关资源
最近更新 更多