javascript
html函数属性的赋予,你可以将javascript函数名称设置为html属性吗?
你可以,是的.你是否應(yīng)該完全是另一個(gè)問(wèn)題,答案幾乎肯定是“不”(就執(zhí)行字符串而言;就下面所示的替代方案而言,有時(shí)它是有用的).
你評(píng)估代碼片段的方式(你所擁有的不只是一個(gè)函數(shù)名,因?yàn)?))將使用可怕的eval:
eval(fn);
幾乎總是比使用eval更好的選擇. (見(jiàn)下文.)
評(píng)估示例:
$("#example").on("click", function() {
var fn = $("#example").attr("data-function-name");
eval(fn);
});
function showAllElements() {
alert("showAllElements was called");
}
Click Me
其中一個(gè)更好的選擇是將函數(shù)引用存儲(chǔ)為對(duì)象的屬性,然后使用括號(hào)表示法根據(jù)函數(shù)名稱獲取函數(shù)引用:
例:
var functions = {
showAllElements: function() {
alert("showAllElements was called");
}
};
$("#example").on("click", function() {
var fn = $("#example").attr("data-function-name");
functions[fn]();
});
Click Me
請(qǐng)注意,我只是存儲(chǔ)函數(shù)名稱,而不是任意代碼.
更新:如果您的功能嵌套在對(duì)象內(nèi),請(qǐng)參見(jiàn)canon’s answer,以便巧妙地處理它,例如: mumble.foo.doSomething,使用reduce. (reduce是ES5功能,但它是可填充的.)
旁注:除非您執(zhí)行的操作不僅僅是檢索data- *屬性的值,否則請(qǐng)不要使用數(shù)據(jù),請(qǐng)使用attr. data初始化元素的數(shù)據(jù)高速緩存,讀入該元素的所有data- *屬性,并將它們復(fù)制到高速緩存.如果你沒(méi)有使用它,沒(méi)有理由這樣做.您使用數(shù)據(jù)訪問(wèn)data- *屬性的想法是一種常見(jiàn)的誤解.
總結(jié)
以上是生活随笔為你收集整理的html函数属性的赋予,你可以将javascript函数名称设置为html属性吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html制作背景音乐,HTML插入背景音
- 下一篇: cesium雷达图_20个简化开发任务的