我对此代码有疑问,它在除IE之外的所有浏览器上均有效。

HTML

<div class="separator">
<a href="http://www.domain.com/images/s1920/original.jpg">
<img height="250" src="http://www.domain.com/images/s400/photo.jpg" />
</a>
</div>


JAVASCRIPT

<script type='text/javascript'>
var ImageSource = document.getElementsByClassName('separator')[0].getElementsByTagName('a')[0].href;
ImageSource = ImageSource.replace(/0\//, '0-d/');
</script>


它可以按预期工作,但是当我在IE上进行测试时,它将返回此错误,

Message: Object doesn't support this property or method


可能是什么问题呢?

最佳答案

IE8或更早版本不支持.getElementsByClassName

您可以改用.querySelector(),它在IE8和所有其他现代浏览器中都可以使用。

var ImageSource = document.querySelector('.separator').getElementsByTagName('a')[0].href;


请注意,querySelector()返回一个元素(因此在上面的代码中没有[0])。在给定的示例中,您只需要一个元素,但是如果您想要多个元素,与.getElementsByClassName()相同,则可以使用.querySelectorAll()

另请注意,以上所有内容仅适用于IE8和更高版本。如果需要支持IE7,则必须寻找其他解决方案。最好的选择可能是jQuery,因为IE7没有内置的本机解决方案。

希望能有所帮助。

关于javascript - Javascript函数在IE中返回未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18378073/

10-12 12:30
查看更多