语法缺失)当所有)似乎在那里?

Sea*_*lin 4 javascript syntax jquery innerhtml

好的,所以我一直在建立这个网站.其中一个页面是新闻源www.wenotelling.x10.mx/news/新闻页面中嵌入了新闻源页面,这是实际更新发生的地方.所有这一切都非常好,并且该网页似乎有效.我有2个问题.

  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");
});
Run Code Online (Sandbox Code Playgroud)

因此,在编辑时我们可以简单地说<smiley class="happy"></smiley>.我知道笑脸并不是真正的标签,但我认为它不会有所作为,因为我之前见过"faketags".我尝试将笑脸标签更改为<div class="happy"></div>但不起作用.在脚本的最后,我放了一个刷新功能.

无论如何,脚本无法正常工作.它被称为,但没有工作.所以我通过Firebug运行它.Firebug发出以下消息:

SyntaxError: missing ) after argument list
[Break On This Error]   
(22 out of range 21)
Run Code Online (Sandbox Code Playgroud)

然后我看了一下脚本,好吧,所有的东西似乎都在那里.不仅如此,第22行之前的表情也不起作用.

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

sou*_*eck 5

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

 if(location.hash !="#");{
Run Code Online (Sandbox Code Playgroud)

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

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


Zir*_*rak 5

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

if(location.hash !="#");{
Run Code Online (Sandbox Code Playgroud)

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

此外,没有这样的事情document.getElementsByClass,只有document.getElementsByClassName,并且返回NodeList而不是单个元素(因此更改innerHTML它将不会做太多.)

其他说明:

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

  • 你正在使用的jquery版本是非常过时的,在这种情况下包含jquery是不合理的 - 你只是用它来做一个$(document).ready,没有jquery可以在没有jquery的情况下完成,如果你有一个(半关闭)window.onload监听器,或者只是把脚本放在靠近的地方</body>

  • 正如评论中所说,我不能同意,不要只是将图像粘贴在这些元素中.添加一个合适的CSS类,让CSS处理它.