能夠將字符串生成語句執行,和SQL的exec()相似。 |
|
function output(a,b) { var tmpa,tmpb; tmpa=("document.all."+a+".value"); tmpb=("document.all."+b+".value"); document.write(tmpa+tmpb); } output('input1','input2'); 這樣javascript就會先取出a,b的值,而後和前面的document.all.以及後面的.value組合運行,因而就能夠 順利取出input1和input2的值. |
看完上面的基本理解是什麼含義了吧html
而後看下面的理解java
稍微晉級一點點,用到了DOM中替換圖片的例子編程
【()函數】瀏覽器 來源:http://blog.csdn.net/ianc/archive/2006/05/29/761094.aspx服務器 JavaScript有許多小竅門來使編程更加容易。 var the_uned_answer = "2 + 3"; 若是你運行這段程序, 你將會看到在JavaScript裏字符串"2 + 3"實際上被執行了。 文檔對象模型(DOM)的問題之一是:有時你要獲取你要求的對象簡直就是痛苦。 function swapOne() if (the_image == "parrot") the_image_object.src = "ant.gif"; 連同這些image標記: [img src="/stuff3a/parrot.gif" name="parrot"] 請注意象這樣的幾行語句: 它把一個圖象對象敷給了一個變量。雖然看起來有點兒奇怪,它在語法上卻毫無問題。
不幸的是, JavaScript將會尋找名字叫 the_image而不是你所但願的"cheese"或者"parrot"的圖象, 還好,可以幫你獲得你想要的對象。 function simpleSwap()
咱們經常在Javascript中間到這個函數, 函數對做爲數字表達式的一個字符串進行求值,其語法爲: (expr) 此處 expr 是一個被求值的字符串參數。若是該字符串是一個表達式, 求該表達式的值;若是該參數表明一個或多個 JavaScript 語句,那麼 執行這些語句。 函數能夠用來把一個日期從一種格式(老是字符串)轉換爲數值表達式或數字。 ============================== 註釋: 例子:(id + "_icon.src="/imgs/collapse_up.gif'"); 引用: 若是仍是不明白深刻認識javascript中的函數 來源:http://www.x2blog.cn/supnate/#sid.1735/page.1/ 發現爲本文起一個合適的標題還不是那麼容易,呵呵,因此在此先說明下本文的兩個目的: ►先來講的用法,內容比較簡單,熟悉的能夠跳過。
var
code1
=
'"a" + 2'
;
var code2 = '{a:2}' ; alert ( ( code1 )); alert ( ( code2 )); alert ( ( '(' + code2 + ')' )); 能夠看到,對於對象聲明語句來講,僅僅是執行,並不能返回值。爲了返回經常使用的「{}」這樣的對象聲明語句,必須用括號括住,以將其轉換爲表達式,才能返回其值。這也是使用JSON來進行Ajax開發的基本原理之一。在例子中能夠清楚的看到,第二個alert語句輸出的是undefined,而第三個加了括號後輸出的是語句表示的對象。 ►如今來講本文的重點,如何在函數內執行全局代碼。爲了說明這個問題,先看一個例子:
var
s
=
'global'
;
function demo1 (){ } demo1 (); alert ( s ); 很好理解,上面的demo1函數等價於:function demo1(){var s='local';},其中定義了一個局部變量s。
var
s
=
'function test(){return 1;}'
;
function demo2 (){ } demo2 (); alert ( test ()); 這是由於test函數在局部空間定義,demo2函數內能夠訪問到,外面就訪問不到了。
function
loadCode
(){
} 可見不可能在全局空間內執行,這就給開發帶來了很多問題,也看到過不少人爲此鬱悶。 不過如今偶終於找到了解決辦法,嘿嘿,能夠同時兼容IE和Firefox,方法以下:
var
X2
={}
X2 . = function ( code ){ if (!!( window . attachEvent && ! window . opera )){ } else { } } 如今若是要想在函數內定義全局代碼,就能夠經過調用X2.(code)方法,一個例子以下:
var
s
=
'global'
;
function demo3 (){ X2 . ( 'var s="local"' ); } demo3 (); alert ( s ); //->'local' 可見,在demo3函數內從新定義了全局變量s="local"。 其實看到這裏,或許有人感受問題也太容易解決了點,呵呵,但發現這個辦法卻是須要些運氣和技巧的: Firefox的函數的特色的確是很使人奇怪的,但從javascript規範中倒也能找到其來源:
If value of the property is used in any way other than a direct call (that is, other than by the explicit use of its
name as an Identifier which is the MemberExpression in a CallExpression), or if the property is assigned to, an Error exception may be thrown. 意思大概就是說函數的執行是和調用者相關的,但並無說其執行上下文的問題。因此IE和Firefox孰是孰非也就很難說了,你們知道解決辦法就好 |
「七」樂無窮,盡在新浪新版博客,快來體驗啊~~~請點擊進入~