2017-05-14 64 views
-1

请帮帮忙,我无法实现这个JavaScript来我的博客......如何将这个Javascript实现为Blogger?

(function() { 
    var pre = document.getElementsByTagName('pre'), 
     pl = pre.length; 
    for (var i = 0; i < pl; i++) { 
     pre[i].innerHTML = '<span class="line-number"></span>' + pre[i].innerHTML + '<span class="cl"></span>'; 
     var num = pre[i].innerHTML.split(/\n/).length; 
     for (var j = 0; j < num; j++) { 
      var line_num = pre[i].getElementsByTagName('span')[0]; 
      line_num.innerHTML += '<span>' + (j + 1) + '</span>'; 
     } 
    } 
})(); 

你可以看到此Javascript在这里工作精细:http://jsfiddle.net/tovic/AbpRD/1/

+0

你不能?你有什么问题? – Picard

+1

[我如何在Blogger中添加JavaScript?](http://stackoverflow.com/questions/6449733/how-can-i-add-javascript-inside-blogger) – Lucky

回答

0

如果您看到的是以下类型的错误,当你尝试在你的主题代码添加这个JavaScript片段 -

错误解析XML:元素的内容必须包含合式的字符数据或标记。

然后解决此错误,请使用以下方法 -

裹的代码在script标签CDATA指令中。该代码将看起来像 -

<script> 
//<![CDATA[ 
(function() { 
    var pre = document.getElementsByTagName('pre'), 
     pl = pre.length; 
    for (var i = 0; i < pl; i++) { 
     pre[i].innerHTML = '<span class="line-number"></span>' + pre[i].innerHTML + '<span class="cl"></span>'; 
     var num = pre[i].innerHTML.split(/\n/).length; 
     for (var j = 0; j < num; j++) { 
      var line_num = pre[i].getElementsByTagName('span')[0]; 
      line_num.innerHTML += '<span>' + (j + 1) + '</span>'; 
     } 
    } 
})(); 
//]]> 
</script> 

这种方法是了解,Blogger XML解析器将忽略CDATA指令中的任何数据的布局标签(例如像<data:blog.homepageUrl/>)唯一的缺点。它不会用它们的实际价值取代它们,它不会解释它们并按原样显示它们。

2.逃生在代码以下字符 -

“替换为& QUOT;
&被替换为&安培;
< 替换为& LT;
>替换为& gt;

逃脱后,代码应该看起来像 -

<script> 
(function() { 
    var pre = document.getElementsByTagName('pre'), 
     pl = pre.length; 
    for (var i = 0; i & lt; pl; i++) { 
     pre[i].innerHTML = '&lt;span class=&quot;line-number&quot;&gt;&lt;/span&gt;' + pre[i].innerHTML + '&lt;span class=&quot;cl&quot;&gt;&lt;/span&gt;'; 
     var num = pre[i].innerHTML.split(/\n/).length; 
     for (var j = 0; j & lt; num; j++) { 
      var line_num = pre[i].getElementsByTagName('span')[0]; 
      line_num.innerHTML += '&lt;span&gt;' + (j + 1) + '&lt;/span&gt;'; 
     } 
    } 
})(); 
</script> 

数据布局标签下面这种方法时仍然起作用。记住逃生<>周围的数据布局标签(又名<data:blog.homepageUrl/>工作,但不&lt;data:blog.homepageUrl/&gt;

如果没有数据布局标签必须包含在JavaScript。然后,您可以通过布局选项卡将其添加到HTML/JavaScript小工具中,而不是直接将其包含在主题代码中。