我刚开始玩MooTools,我不明白为什么会发生以下情况:
var input = new Element('input');
input.set('type','text');
input.set('value','this is the value');
console.log(input);
结果为:<input type="text">
,因此设置value
无效。
但如果我这样做:
var input = new Element('input');
input.set('type','text');
input.set('someValue','this is the value');
console.log(input);
我得到<input type="text" somevalue="this is the value">
的预期结果。
我是否忽略了某些内容,是我试图不允许的内容,这是Chrome中的错误(11.0.696.71,OS X)还是我做错了什么?
更新:感谢您的回答!你是对的,价值实际上是设定的; console.log(input.get('value'))
返回正确的值,当我将输入对象附加到DOM时,我可以看到输入字段中的值。
显然,值设置不会反映为HTML元素的属性,而只是存储在内部。
答案 0 :(得分:2)
您确定没有设置该值吗?
致电时,您会得到什么:input.get('value')
我测试了这个(在firefox中),即使控制台只记录<input type="text">
,实际上这个值确实已经设置好了。尝试将元素添加到页面中,您将看到它:)
答案 1 :(得分:1)
我对这个'红鲱'有类似的问题,我已经解决了,并且认为我会分享。 当用户点击该行时,我正在尝试使表行的某些单元格可编辑:
var cells = this.getElements("td");
for (var ix=0;ix<cells.length; ix++){
if (cells[ix].hasClass("edType_text")){
var celltext = cells[ix].get("text");
cells[ix].set('text','');
var editTag = new Element ('input',{type:'text','value':celltext});
editTag.inject(cells[ix]);
}
}
这似乎工作正常但是当我点击单元格时我无法编辑它。 Firebug和Chrome工具显示添加的输入标记为
<input type='text'>
而不是预期的:
<input type='text' value='xxxxxx' />
然而,如上所述,这是完全正常的。
发现'故意'错误?
当然,当我点击输入字段时,它再次触发了该行上的鼠标事件,从而阻止我进入输入! : - {
为避免这种情况,只需在if块的末尾添加以下代码:
editTag.addEvent("mousedown",function(event){event.stopPropagation();});