如何在原型中使用期刊更新器更新值属性

How to update value attribute using periodicalupdater in prototype

本文关键字:更新 属性 使用期 原型      更新时间:2023-09-26

如何在原型中使用期刊更新器更新值属性?

new Ajax.PeriodicalUpdater('content', '/content/',
{
    method: 'post',
    frequency: 5,
});

这将更新元素中的文本。我想更新值属性。这可能吗?

从源代码来看,似乎Ajax.PeriodicalUpdater将其选项直接传递给Ajax.Updater,而又支持insertion选项。 文档说insertion可以是一个字符串,但它遗漏了一个有用的细节,它可能是一个函数。

new Ajax.PeriodicalUpdater('content', '/content/',
{
    method: 'post',
    frequency: 5,
    insertion: Form.Element.setValue
});

这没有经过测试,但我相信默认Element.insert可以用Form.Element.setValue替换,因为参数的顺序相同


更新:原型.js比HTML5旧,因此不支持<progress>元素。 Form.Element.setValue()通过元素的标签名称计算出使用哪种方法,并且它没有用于progress的方法,这就是上述失败的原因。 相反,我们可以编写自己的函数来代替Form.Element.setValue

new Ajax.PeriodicalUpdater('content', '/content/',
{
    method: 'post',
    frequency: 5,
    insertion: function (progress, value) {
        progress.value = value;
        if (value >= progress.max) throw $break;
    }
});