dqnqpqv3841 2010-10-21 11:46
浏览 28
已采纳

javascript相当于php $$美元

  1. I have declared a local variable named cont in a function named validate.
  2. I am calling a function process from inside validate.
  3. I am sending the string 'cont' as argument to validate function.
  4. In the process function using the string 'cont' i want to access the javascript local variable's value like window['cont']. But i get undefined.
  5. What i am trying to do is trying to access variables like $GLOBALS in php or $$.

Here is an example of what i did.

<script>

function process(str)
{
   alert(window[str]);
}

function validate()
{
   var cont='once there lived a king named midas';
   process('cont')
}

validate();

</script>

The reason is i do most of the forms as ajax. i dont want to make a request string like this.

var param = "command=insert&content=" + encodeURIComponent(cont);

i want to do like this.

var param = makeParam('command,[insert],content,(cont)');

what i do in makeparam is i use regular expression to extract key value pairs. so i get the string cont from (cont) and i substitute it into window variable like window[cont]. cont will have the string 'cont'.

so how do we get the content of a variable by using the name of the variable as string?

so i am looking for javascript equivalent of php's $$

Edited

a part of the code where i extract cont which is inside (cont) which means i want the content of the string between ().

nxt = str[i+1].match(/\((.*)\)$/)

if(nxt)param += '=' + encodeURIComponent(window[nxt[1]]);

the content of param would be

"command=insert&content=once there lived a king"
// assume that once there lived a king is encoded

Edit. Note2.

After few more responses i am editing the code to add this.

I am trying to do like $GLOBALS in php.

I haven't tried whether $GLOBALS would cantain local variables too.

and learned that local scope will not come into $GLOBALS.


Update after reading Felix King's Update.

I want to use a function which will construct a query string as simpler as possible. like the following.

var param = makeParam('command,insert,/title/,/keywords/,/description/,mode,[1],fckcontent,(cont)');

// if it is a text without // or () then the it is a straight key value pair. so i will do comment=insert.

//if it is /title/ then the key is title and its value is an input elements value with id as title so title=getElementById('title')

//if it is mode,[1] then mode is the key and 1 is its direct value//

//if it is fckcontent,(cont) then fckcontent is the key and cont is a javascript local variable which will contain html content from a WYSIWYG editor.

// a sample result will be

 var param = "command=insert&keywords=somekeywords&description=somedescription&mode=1&fckcontent=<p>once there lived a king<p>

and then casablanca stated that $GlOBALS will not contain local scope variables and that is the same way in javascript. that's right.

  • 写回答

5条回答 默认 最新

  • dongyuan2652 2010-10-21 11:56
    关注
    function validate()
    {
       var cont='once there lived a king named midas';
       process('cont')
    }
    

    cont is defined in the local scope of the function, not in global scope. Either do just

    cont='once there lived a king named midas';
    

    (without var) or

    window.cont='once there lived a king named midas';
    

    Update:

    But why do you want to go through so much trouble with parsing strings? Why don't you do:

    var param = makeParam({command: 'insert', content: encodeURIComponent(cont)});
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入