我在Ruby on Rails上运行JavaScript,当用户单击链接时将表单动态插入到页面中。为什么我的object.children未定义?
它不工作,但有一个特定的错误得到我的山羊:我的表单返回form.children UNDEFINED在调试控制台。
这里是(在Rails)的形式:
<div class="field">
<%= f.label :name, 'Tag:' %>
<%= f.text_field :name %>
</div>
这里是在application.js中的JavaScript;
function add_fields(link, association, form) {
console.log(form);
console.log(form.children);
link.insertBefore(form, link.previousSibling.previousSibling);
}
我测试了应用程序是否实际上通过输出文本等来调用javascript,它的工作原理。问题显然与我的形式。
最后,控制台输出:
<div class="field">
<label for="post_tags_attributes_4_name">Tag:</label>
<input id="post_tags_attributes_4_name" name="post[tags_attributes][4][name]" size="30" type="text" />
</div> application.js:21
undefined application.js:22
Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
顺便说一句,我想落实动态插入嵌套形式railscast#197和它一直是一个灾难!
- 编辑---
这里是我如何调用add_fields,传入三个功能构建领域元素:
红宝石功能:
module TagsHelper
def link_to_add_fields(name, post_form, association)
new_object = post_form.object.class.reflect_on_association(association).klass.new
tag_field = post_form.fields_for :tags, new_object do|tag_form|
render("tag_field", :f=>tag_form)
end
#debugger
link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(tag_field)}\")")
end
end
这里是tag_field HTML:
<div class="field">
<%= f.label :name, 'Tag:' %>
<%= f.text_field :name %>
</div>
声音像'form'不是DOM元素。你能告诉我们你如何调用'add_fields'函数(使用哪些值)? – Bergi
你的意思是'childNodes'而不是'children'吗? – alex
也许你的测试浏览器不支持['Element.children'](https://developer.mozilla.org/en-US/docs/DOM/Element.children) – Musa