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