【问题标题】:RJS: Check for existing page element?RJS:检查现有的页面元素?
【发布时间】:2010-10-12 10:50:57
【问题描述】:

我有一个 id 为“foo”的文本字段,有时存在有时不存在。如果存在,我想填写某个值。

您如何使用 RJS(在 Rails 2.2 中)做到这一点?

我试过了,还是不行:

if page[:foo]
  page[:foo].value = "bar"
end

我明白了

TypeError:如果文本字段不存在则为 Null 值

.

【问题讨论】:

    标签: javascript ruby-on-rails prototype rjs


    【解决方案1】:

    我已经多次提出这个问题,我有一个条件项,如果它存在则需要对其采取行动。使用 page.select 可以避免 Null Value 错误。

      page.select('#dom_object_id').each do |element|
        element.value = "bar"
      end
    

    我把它放在我的 *.js.rjs 文件中。当 select 向 each 发送一个空数组时,它不返回任何内容,而不是当页面上没有具有正确 ID 的 DOM 对象时直接按 id 选择时得到的 TypeError 。

    【讨论】:

    • 非常感谢 RJS 解决方案!
    【解决方案2】:

    我认为您不能从 RJS 获得。作为一种解决方法,您可以简单地从 RJS 调用一个 javascript 方法来检查元素是否存在。

    page << "update_foo('#{my_value}');"
    

    Javascript ..

    function update_foo(val)
    {
      if( $('foo') != undefined )
      {
        $('foo').value = 'bar';
      } 
    }
    

    编辑

    修复了红宝石部分..

    【讨论】:

    • 像魅力一样工作(除了没有必要使用“!=未定义”)。只要 RJS 中没有解决方案,这就是我的解决方案。
    猜你喜欢
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多