2013-07-02 88 views
0

我在需要觸發的文本字段內有一些jQuery,但我努力想要發生任何事情。從輸入字段獲取功能

我想解釋這個最好的辦法就是放下一些代碼:

<input type="hidden" id="win-body-tst" value="$("#a").append($("#b"));"> 

<script> function NNNfoo(){ 
    var funcvar = document.getElementById('win-body-tst').value; 
    funcvar 
}</script> 

我打電話NNNfoo()成功,但追加不動作。

+0

你爲什麼試圖將元素附加到另一個元素的'value'內的另一個元素?另外,'value'屬性中的JavaScript不會被執行,只會給你一個字符串。另外,你用'''在屬性的內部分隔字符串*,但外部字符串也由*字符分隔,所以字符串打開和關閉並形成無效的HTML。 –

+0

爲什麼你在表單中包含Javascript代碼作爲隱藏元素?這是一個非常糟糕的主意。如果您知道要執行的代碼,只需將其放入您的腳本。如果有其他選擇,請在腳本中對它們進行編碼,並使用隱藏字段值在它們之間進行選擇。 – 2013-07-02 23:15:49

回答

1

您可以

function NNNfoo(){ 
    var functionBody = document.getElementById('win-body-tst').value; 
    var func = new Function(functionBody); 
    func(); 
} 

做,但爲什麼你想從input元素運行任意代碼?

+1

這是一種執行「eval」的相當冗長的方式。 – Quentin

+0

我想..我剛剛從內存中徹底抹去了'eval' ... :),雖然它們幾乎是一樣的......(*範圍問題*旁邊) –

+0

謝謝。我用這個代碼和一個全局函數來替換最後的輸入。謝謝你的幫助。 –

2

eval將運行JS代碼,它表示爲一個字符串(但我會退後一步,嘗試解決任何問題,你有另一種方式,通常不是一個好主意,要求用戶輸入JS) 。

eval(funcvar); 

(你還需要你"的數據轉換爲&quot;,使他們不作爲屬性值分隔符)。