2009-09-20 38 views
0

好吧,這可能是一個愚蠢的問題(可能是一些語法),但谷歌沒有告訴我爲什麼這不起作用,所以這裏。從<head>任意參數JavaScript函數不可訪問onclick事件

我有一個函數附加_..._字段,它接受任意數量的參數,第一個是將字段添加到什麼的id,以下所有字段都只是這些字段的名稱。它被黑了,所以可能有一些事情我可以改進。該功能將出現在導入的腳本類型=「文/ JavaScript的」由軌道

append_widget_form_fields = function(a){ 
    var widget_el = $(arguments[0]); 
    var new_li = Element.new("li", class : widget_el.id, id : widget_el.id+"_new"); 
    for (var field in arguments) { 
    if (field == arguments[0]){} // ignore first arg. 
    else { //inserts fields into <li> 
     Element.insert(new_li, { bottom : get_input_box_from_field_name(field , widget_el.id)}); 
    } 
    } // inserts <li> into widget 
    Element.insert(widget_el, { bottom : new_li }); 
} 

無論哪種方式產生的標籤,我看不出有什麼錯它的我如何定義它的術語。我曾試着在它前面添加一個變種 - 沒有幫助。該函數的調用方式是:

<input type="button" value="Add Fields" onclick="append_widget_form_fields('some_widget_id', 'headline', 'author', 'link');"/> 

附錄問題:JS應該語法錯誤時,什麼是錯的使用功能,而不是報廢的定義,正確嗎?

+0

您正在使用哪種瀏覽器?例如,Firefox會傾向於報告可能不會在瀏覽器中顯示爲錯誤的錯誤。 – 2009-09-20 05:39:41

+0

在頁面完全加載之前調用此函數嗎? – 2009-09-20 05:41:41

回答

1

這裏有幾個問題:

  1. append_widget_form_fields是未申報。你應利用var聲明,或將其轉變爲函數聲明(即function append_widget_form_fields(){...}

  2. 有對的Prototype.js Element沒有new方法。但是,Element可以是,稱爲構造函數-new Element(...)

  3. 這裏的主要問題可能是您使用classclass名稱在對象字面量中實際上在語法上是不允許的(在ES3中,因爲它是「未來保留字」的一部分)。您應該引用它 - 「class」 - 或者更改爲「className」(Prototype.js可以理解)。

+0

我不確定哪些修復它(也發現了一些沒有大括號的Element聲明),但現在已經修復了。剛剛不習慣JS從一個半月的紅寶石直接進來。謝謝! – 2009-09-20 14:56:45