在可能还不存在的html上运行的Javascript

在可能还不存在的html上运行的Javascript,javascript,delegates,Javascript,Delegates,我找到了一些我想使用的代码 但是我把它插入了我的购物车平台(在他们给我fr JS的区域),我得到了一个错误: Uncaught TypeError: Cannot read property 'getElementsByTagName' of null 代码非常简单,显然可以在fiddle上使用,所以我怀疑这可能是因为相关的html还没有生成?我认为这与“授权”有关,但我不清楚如何实施 以下是生成的HTML: <div class="footer_block_content tagclo

我找到了一些我想使用的代码

但是我把它插入了我的购物车平台(在他们给我fr JS的区域),我得到了一个错误:

Uncaught TypeError: Cannot read property 'getElementsByTagName' of null
代码非常简单,显然可以在fiddle上使用,所以我怀疑这可能是因为相关的html还没有生成?我认为这与“授权”有关,但我不清楚如何实施

以下是生成的HTML:

<div class="footer_block_content tagcloud">
    <a class="tag_level2 first_item"> asd </a>
    <a class="tag_level1 item"> rfds </a>
    <a class="tag_level1 item"> ewsf </a>
    <a class="tag_level3 item"> sdfa</a>
    <a class="tag_level1 item"> earf </a>
    <a class="tag_level1 item"> sdfae </a>
    <a class="tag_level1 last_item"> adfa </a>
</div>

自闭症
RFD
ewsf
sdfa
耳垂
sdfae
adfa

您好,检查您是否希望这样做:

    <div class="tagcloud">
    <a href="#" class="tag-link-79">tag1</a> 
    <a href="#" class="tag-link-78">tag2</a> 
    <a href="#" class="tag-link-35">tag3</a> 
    <a href="#" class="tag-link-32">tag4</a> 
    <a href="#" class="tag-link-29">tag5</a> 
    <a href="#" class="tag-link-30">tag6</a> 
    <a href="#" class="tag-link-34">tag7</a> 
    <a href="#" class="tag-link-31">tag8</a> 
    <a href="#" class="tag-link-33">tag9</a> 
    </div>

<script>
    function addColors(){
        var tags = document.getElementsByTagName("a");

        for(var i=0;i<tags.length;i++){
            tags[i].style.backgroundColor = randomColor();
        }
    }

    function randomColor() {
        return  '#' + (0x1000000 + (Math.random()) * 0xffffff).toString(16).substr(1, 6);
    }

    document.load = addColors();
</script>

函数addColors(){
var tags=document.getElementsByTagName(“a”);

对于(var i=0;i来说,似乎您将这些代码放入浏览器,按顺序呈现,并立即执行它看到的代码,


嗯,是的……是的。这就是为什么我在我的问题:)中链接到了确切的JSFIDLE页面,以确保在执行脚本之前html已完全加载。加载=addColors();啊,好吧……对不起,我误解了。好吧,我尝试过了,不再出现错误(耶!)但是我也没有得到任何颜色。我可能有点问题,所以我会玩它。无论如何,你让我通过了错误!谢谢我确实使用了它,没有颜色变化。我正在调查检查你是否正在添加另一行,如document.load=addColors();因为如果你这样做,你将覆盖上一行。
    <div class="tagcloud">
    <a href="#" class="tag-link-79">tag1</a> 
    <a href="#" class="tag-link-78">tag2</a> 
    <a href="#" class="tag-link-35">tag3</a> 
    <a href="#" class="tag-link-32">tag4</a> 
    <a href="#" class="tag-link-29">tag5</a> 
    <a href="#" class="tag-link-30">tag6</a> 
    <a href="#" class="tag-link-34">tag7</a> 
    <a href="#" class="tag-link-31">tag8</a> 
    <a href="#" class="tag-link-33">tag9</a> 
    </div>

<script>
    function addColors(){
        var tags = document.getElementsByTagName("a");

        for(var i=0;i<tags.length;i++){
            tags[i].style.backgroundColor = randomColor();
        }
    }

    function randomColor() {
        return  '#' + (0x1000000 + (Math.random()) * 0xffffff).toString(16).substr(1, 6);
    }

    document.load = addColors();
</script>
window.onload = function() {
    var tags = [].slice.call(document.querySelector('.tagcloud')
    .getElementsByTagName('a'));

    tags.forEach(function(el) {
      el.style.backgroundColor = randomColor();
    }); 

    function randomColor() {
        return  '#' + (0x1000000 + (Math.random()) * 0xffffff).toString(16).substr(1, 6);
    };
};