【问题标题】:Syntax Missing ) when all ) seem to be there?语法缺少 ) 当所有 ) 似乎都在那里?
【发布时间】:2012-12-09 19:51:01
【问题描述】:

好的,所以我一直在构建这个网站。其中一页是新闻源 www.wenotelling.x10.mx/news/ 新闻页面中嵌入了新闻源页面,这是实际更新发生的地方。一切都很好,而且该网页似乎可以正常工作。我有两个问题。

  1. 新闻源似乎在页面加载时没有更新,但在页面刷新时加载。
  2. 我想添加笑脸。

所以我写了一些 JScript 来一次性解决这两个问题。由于新闻源是通过 HTML 页面更新的,而且我不想每次都去寻找笑脸的 URL,所以我想出了以下代码: http://www.wenotelling.x10.mx/news/smilescript.js

$(document).ready(function() 
{
    alert("Called");
    document.getElementByClass('happy').innerHTML = '<img src="smileys/happy.gif"></img>';
    document.getElementByClass('star').innerHTML = '<img src="smileys/star.gif"></img>';
    document.getElementByClass('dead').innerHTML = '<img src="smileys/dead.gif"></img>';
    document.getElementByClass('yawn').innerHTML = '<img src="smileys/yawn.gif"></img>';
    document.getElementByClass('snub').innerHTML = '<img src="smileys/snub.gif"></img>';
    document.getElementByClass('relax').innerHTML = '<img src="smileys/relax.gif"></img>';
    document.getElementByClass('devil').innerHTML = '<img src="smileys/devil.gif"></img>';
    document.getElementByClass('cool').innerHTML = '<img src="smileys/cool.gif"></img>';
    document.getElementByClass('wink').innerHTML = '<img src="smileys/wink.gif"></img>';
    document.getElementByClass('shock').innerHTML = '<img src="smileys/shock.gif"></img>';
    document.getElementByClass('bigsmile').innerHTML = '<img src="smileys/bigsmile.gif"></img>';
    document.getElementByClass('confused').innerHTML = '<img src="smileys/confused.gif"></img>';
    document.getElementByClass('sad').innerHTML = '<img src="smileys/sad.gif"></img>';
    document.getElementByClass('angry').innerHTML = '<img src="smileys/angry.gif"></img>';
    document.getElementByClass('clown').innerHTML = '<img src="smileys/clown.gif"></img>';
    document.getElementByClass('blush').innerHTML = '<img src="smileys/blush.gif"></img>';
    if(location.hash !="#");
    {
        location = "#";
        location.reload(true);
    }
    alert("A-OK");
});

所以,在编辑时我们可以简单地输入&lt;smiley class="happy"&gt;&lt;/smiley&gt;。我知道笑脸不是真正的标签,但我不认为它会有所作为,因为我以前见过“假标签”。我尝试将笑脸标签更改为&lt;div class="happy"&gt;&lt;/div&gt;,但这也不起作用。在脚本的最后,我放了一个刷新函数。

无论如何,脚本无法正常工作。它被调用,但不起作用。所以我通过了 萤火虫。 Firebug 给出了以下消息:

SyntaxError: missing ) after argument list
[Break On This Error]   
(22 out of range 21)

然后我查看了脚本,好吧,所有的 ) 似乎都在那里。不仅如此,第 22 行之前的笑脸也不起作用。

无论如何。任何想法为什么: 1) 笑脸没有出现? 2) 脚本没有被完全执行?

【问题讨论】:

  • if(location.hash !="#") 不是if(location.hash !="#");
  • 你为什么不用css-background图片?
  • 另外,location = "#"; 是一个有效的分配吗???
  • 使用在线语法验证网站,如 jslint 或 jshint...您会比编写问题更快地隔离自己的问题
  • 看看当你正确地标记你的代码时,错误会立即显现出来

标签: javascript jquery syntax innerhtml


【解决方案1】:

在您链接到的脚本中,第 19 行:

if(location.hash !="#");{

那个分号不应该在那里。 (顺便说一句,if 块内的行应该缩进)

此外,没有 document.getElementsByClass 这样的东西,只有 document.getElementsByClassName,它返回一个 NodeList 而不是单个元素(因此更改它的 innerHTML 不会有太大作用。)

其他说明:

  • 在您的网站中,您包含两次css/stylesheet.css(第 4 行和第 12 行),实际上是 3 次,如果您计算 iframe 中的那一个。

  • 1234563 ether 粘贴一个(半关闭)window.onload 监听器,或者只是将脚本靠近 &lt;/body&gt;
  • 正如 cmets 中所说,我完全同意,不要只在这些元素中粘贴图像。添加适当的 CSS 类,并让 CSS 处理它。

【讨论】:

  • 我要包含我的样式表两次?第 12 行包含导航栏……那是否重新包含样式表?不管怎样,我会看看用 CSS 做的。
  • 对不起,第 13 行;在源代码的第 12 行上,您还可以重新打开 &lt;html&gt;&lt;head&gt;。在页面上做一个视图源。
  • 啊。我明白我现在做了什么。最初我将导航栏作为 iFrame。显然,这行不通,所以我将其更改为 .php。样式表也包含在 .php 中,以及头部和 html 的重新打开。
【解决方案2】:

有时 javascript 错误有点误导,但至少可以在您的代码中发现一个语法错误:

 if(location.hash !="#");{

有一个额外的;。也许这就是原因。

顺便说一句,既然你一直在使用 jQuery,为什么不将它用于元素选择和 html 内容设置呢?

【讨论】:

    【解决方案3】:

    您应该立即解决的一些问题是调用不存在的方法和杂散分号。第一个是您致电getElementByClass,它是单数而不是复数。其次,这里有一个不合适的分号:if(location.hash !="#");

    由于您使用的是 jQuery,我建议您避免使用像 getElementsByClass 这样的本机方法,因为在一些较旧的浏览器中不存在这种方法。相反,尝试这样的事情:

    var emoticons = ["happy","star","dead","yawn"];
    
    $(document).ready(function () {
        $.each(emoticons, function (index, value) {
            $("<img>", {src: "smileys/" + value + ".gif"}).appendTo("." + value);
        });
    });​
    

    请注意,我们不会为每个表情符号一遍又一遍地重复自己。我鼓励您研究精灵,因为它们通常可以更好地解决此类问题。但那是另一天的事了。

    演示:http://jsfiddle.net/yRSF9/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 2020-11-02
      • 2019-04-29
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多