-1

问题真的很简单,我花了 2 个小时在上面,但我没有任何想法。没有像 Jquery 这样的库。它是世界上最简单的功能之一。我确信该函数正在工作,因为当我将其设为内联代码时,它就可以工作。这是代码:

<head>
    <link type="text/css" rel="stylesheet" href="vars.css">
    <link type="text/css" rel="stylesheet" href="font.css">
    <link type="text/css" rel="stylesheet" href="site.css">
    <script src="viewport-units-buggyfill.js" ></script>
    <script src="default.js"></script>
    <script src="site.js"></script>
    <!--<script>
        function byId(id)
        {
           return document.getElementById(id);
        }
    </script>-->
</head

我使用内联 onclick 调用它:

<section id="den" onclick="byId('den').innerHTML = 'red';" class="gizlimenu">
                </section>

这是外部的“default.js”:

function byId(id){
return document.getElementById(id);
}

如您所见,如果我激活评论代码,一切运行正常。这是 Chrome 开发工具的屏幕截图:

在此处输入图像描述

我正在使用括号实时预览来查看页面。其他代码就是因为这个。

注意:当我直接从 index.html 运行它时,我意识到它正在工作。但它不适用于 Brackets 或服务器(甚至是 Dropbox 或 Gdrive 服务器)。所以我认为这可能是脚本路径的问题。

谢谢。

4

1 回答 1

0

考虑到定位脚本的网络路径中可能存在的错误,我实际上建议您不要实现 byId... 在分析了您想要实现的目标之后,您根本不需要它。

您正在单击一个元素,并且单击时您试图找到相同的元素,以便您可以更改它的 innerHTML 属性?就像看狗追尾巴一样。

您不需要在 DOM 中找到刚刚与之交互的元素。将使您直接访问您刚刚单击的元素。所以你可以将它作为参数传递给任何函数,或者你可以内联修改它。

你的例子:

<section id="den" onclick="byId('den').innerHTML = 'red';" class="gizlimenu">
            </section>

可以变成:

<section id="den" onclick="this.innerHTML = 'red';" class="gizlimenu">
            </section>

查看一个运行示例:

http://jsbin.com/feyidoweco/7/edit?html,js,输出

于 2015-01-19T17:37:49.297 回答