我有一小部分代码可以在FF上运行良好但我似乎无法在Safari上工作,除非我在内部任何地方放置警报指令。
任何人都知道可能是什么问题?
var liste_ele = document.getElementsByClassName('accordion_content');
i=0;
while(i<liste_ele.length)
{
var j=0;
var liste_sel = liste_ele[i].getElementsByTagName('select');
while(j<liste_sel.length)
{
liste_sel[j].style.visibility = '';
j++;
}
i++;
}
答案 0 :(得分:2)
为什么不尝试将visibility
设置为visible
而不是''
。
liste_sel[j].style.visibility = 'visible';
通过将visibility
设置为hidden
或隐藏display:none
可能会产生影响,它们是否真的隐藏了。
答案 1 :(得分:0)
如果在while循环中发出警报解决了问题,那几乎肯定是一个时间问题。 DOM中的哪个代码正在运行?你确定它是在你试图找到的元素被创建之后运行的吗?
一个简单的测试就是将你的代码置于超时之中:
window.setTimeout(function(){
// your code here
},100);
如果可行,那么您的问题与操作顺序有关;确保在尝试访问DOM之前创建了DOM。
答案 2 :(得分:0)
@jitter:我已经尝试将可见性设置为可见,但我没有结果所以我只是尝试'',希望它会有所帮助。是的,我的元素是隐藏的而不是未显示的,否则我的脚本在FF上运行不会很完美。
@jvenema:这看起来确实是一个很好的解决方案:)
即使我不知道为什么我的元素没有被创建,因为它们被初始化为可见性:在我使用此脚本传递它们之前,我的固件中的另一个脚本隐藏了:/
无论如何,谢谢,你刚刚解决了我的问题(我已经解决了它的好方法,通过修改脚本将其设置为隐藏但我很好奇:p)! :)
答案 3 :(得分:0)
如果您不需要阻止该位置,请使用样式display:none。否则最初隐藏它,因为Safari将最初使用样式可见性呈现页面:隐藏您将无法使用Javascript切换它。作为解决方法,只需使用javascript切换不透明度;
document.getElementById('Div').style.opacity = 0; to make it disappear
和
document.getElementById('Div').style.opacity = 100; to make it reappear.
它支持我,直到Safari将它组合在一起。