Javascript getElementById - 读取工作,改变不工作

时间:2009-10-23 21:59:09

标签: javascript html css

所以,我有一个相当复杂的ajax事情。 它加载新的html(包括div标签和所有)以显示在页面上。 我添加了一个“更多”链接来加载其他数据。

这个更多的链接链接到我的javascript函数。 “更多”链接位于div中,我给出了一个唯一的ID。下次调用load函数时,我使用document.getElementById(id).style.display =“none”;从页面外观中“删除”这个div。

我为此设置了错误陷阱,发现带有该id的div没有问题,但javascript无法更改我的样式属性。

我测试了alert(document.getElementById(id).innerHTML);这没有问题 - 因此问题的标题。

那么,有没有人有任何想法/我需要提供更多信息吗?主要问题是它不会在任何地方抛出任何错误,但它无法完成我问的任务......

这里有一些代码 -

try 
{
    var myidthing = "morelink" + ContentStart.toString(); //the id is correct
    var div = document.getElementById(myidthing);
    if (!div)
    {
    }
    else
    {
        div.style.display="none"; //this doesn't work, but doesn't raise an error
        alert(div.innerHTML); //this works without problem
    }
}
catch(theerr)
{
    alert(theerr);
}

------------------------->编辑< ------------------ ------- 如果我让任何人感到不安,我会非常抱歉。 我也对自己生气,因为在我的代码中这是一个愚蠢的事情。基本上,我有一个存储父div内容的变量。然后我(成功地)使用removeChild()方法删除了div。然后我的代码将该可变的内容(包括我想要的div)粘贴回父div。 我改变了订单,现在工作正常。

再次,请原谅我。

2 个答案:

答案 0 :(得分:1)

抛出一些要寻找的事物的想法:

  • 你说div是由javascript生成的。您所针对的div可能不是您认为的那个吗?它可能是你正在瞄准另一个div,它已经隐藏或被阻挡......或者你正在显示的innerHTML与你想要定位的元素不同。在if(!div)的情况下放置警报或脚本断点,并查看它是否沿着那条路走。
  • 如果上述代码只是实际代码的精简版,请检查您的实际代码是否存在拼写错误(例如:style.display =“none;”;)
  • 使用FireFox的FireBug插件,在操作完成后检查目标元素,并确保样式信息中显示display:none。如果没有,请使用FireBug的调试器来浏览您的javascript,看看您是否能找出原因。
  • 如果出现导致此行为的其他错误,请使用FireBug中断所有脚本错误。

答案 1 :(得分:0)

尝试空引号而不是'无',看看是否有效?:

document.getElementById('element_id').style.display="";

如果不这样做,请不要更改样式,只需添加一个隐藏元素的类。