0

我在這個greasemonkey腳本的大部分行中都遇到未定義的錯誤。我已經在Chrome和Firefox上測試過,兩者的結果都一樣。我無法弄清楚爲什麼。我對JavaScript有點新,但是我覺得這很基本,我只是缺少一些東西。Greasemonkey未定義的JS錯誤

看了一些相關頁面後,我不確定這個Greasemonkey有關。這很可能是一個通用的JavaScript問題。那麼這是整個劇本。

// ==UserScript== 
// @name AutoHotkey Forum Line Numberer 
// @namespace http://apps.aboutscript.com/gm/ 
// @description Add line numbers to AutoHotkey forum code boxes 
// @icon http://apps.aboutscript.com/gm/linenumbers/autohotkey.png 
// @include http://www.autohotkey.com/forum/viewtopic.php* 
// @include http://www.autohotkey.com/forum/posting.php 
// @version 0.5 
// ==/UserScript== 

var linenumbers = { 

    count_lines: function(text) { 
     var lines = text.split('\n'); 
     return (lines.length); 
    }, 

    make_div: function(max) { 
     var contents = ""; 
     for (i=1; i<=max; i++) { 
      contents += '<span style="margin:0 auto 0 auto; '; 
      if (i%2) { 
       contents += 'color:#FFAAAA; ' 
      } else { 
       contents += 'color:#FFCCCC; ' 
      } 
      contents += '">' + i + '</span><br>'; 
     } 
     if (max <= 15) { 
      contents = '<div style="min-width:25px; height:200px; overflow- y:auto;">' + contents + '</div>'; 
     } else { 
      contents = '<div>' + contents + '</div>'; 
     } 
     return contents; 
    }, 

    add_numbers: function() { 
     var code_tables = document.getElementsByClassName('code'); 
     for (i in code_tables) { 
      var td = code_tables[i]; 
      var div = td.firstChild; 
      var codetext = div.innerText; 
      var total_count = this.count_lines(codetext); 
      var to_inject = make_div(total_count); 
      var newtd = document.createElement('td'); 
      newtd.innerHTML = to_inject; 
      document.body.insertBefore(newtd, td); 
     } 
    } 
}; 

linenumbers.add_numbers(); 

所以我的問題是:什麼問題?我該如何解決它?我怎樣才能在將來防止它?

感謝,

弗蘭基(解析)

順便說一句,我認爲「Greasemonkey的」標籤適用,我很驚訝它不存在。如果您有1500+代表,請添加它。

+0

這是greasemonkey:p – serg

回答

0

var to_inject = make_div(total_count); 你忘了這個。 var to_inject = this.make_div(total_count);

而且你還沒有宣佈我:

for (i in code_tables) { =>for (var i in code_tables) {

for (i=1; i<=max; i++) { =>for (var i=1; i<=max; i++) {

所以當add_numbers將調用make_div,它會既成事實,因爲他們都將在同一個變量上循環。

+0

哎呀,謝謝! =] – parse