繁体   English   中英

如何使用Javascript设置以美元符号结尾的属性?

[英]How can I set attribute which ends with dollar sign using Javascript?

我正在尝试创建一个预处理器,该预处理器将文件中的一些自定义标记转换为可与Polymer的数据绑定$=注释一起使用的属性名称,但是遇到了一个绊脚石。

我无法使用包含美元符号的Javascript设置属性。

我正在尝试转换

<p stuff="align bottom@md top@lg; offset 2gu@md; "></p>

<p align-bottom$="{{globals.abovemd}}" align-top$="{{globals.abovelg}}" offset-2gu$="{{globals.abovemd}}">

我努力了:

.setAttribute("align-bottom$", "{{globals.abovemd}}");

但这不起作用,因为属性名称不能包含美元符号。

有人能想到我可以解决这个问题的方法吗?

这可能可以解决问题(设置无效的属性名称),尽管显然在所有情况下均无效:

 function setDollar(el,name,val){ var attrs = []; var tagName = el.tagName; for (var i = 0; i < el.attributes.length; i++) { var attrib = el.attributes[i]; if (attrib.specified) attrs.push(attrib.name+'="'+attrib.value+'"') } el.outerHTML = '<'+tagName+ ' '+name+'$="'+val+'"'+attrs.join(' ')+'>'+ el.innerHTML+'</'+el.tagName+'>'; attrs.forEach((attr)=>el.setAttribute(attr.name, attr.value)) } setDollar(document.querySelector('#wow'),'foo','bar') 
 <div id="wow"><p>something</p></div> 

仍然需要检查结束标签等。

只要在与该物业打交道时就排除$ $只是将属性反映到该DOM元素上的属性。

.setAttribute("align-bottom", globals.abovemd);

可以肯定的

(您需要先将align-bottom$=""放入html中,这只是为了更新值):

.attributes['align-bottom$'].value = "{{globals.abovemd}}";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM