繁体   English   中英

从JavaScript函数的字符串参数获取值

[英]Get value from string parameter of JavaScript function

在以下标准函数中,您可以为第二个和第三个参数输入多个参数。

var retval = window.showModalDialog(dialog, varArgIn, varOptions);

varOptions参数可以填充为:

'dialogHeight:580px;dialogWidth:700px;center=yes;scroll=no', 

如何获得在dialogHeight设置的唯一值? 因此,我只能在其他地方重复使用该值。

您可以使用简单的正则表达式:

'dialogHeight:580px;dialogWidth:700px;center=yes;scroll=no'.match(/dialogHeight:\w+/)[0]; //dialogHeight:580px

在您的情况下,可能需要: varOptions.match(/dialogHeight:\\w+/)[0];

如果仅需要该值,则可以使用:

varOptions.match(/dialogHeight:(\\w+)/)[1];

如founddrama所建议,如果dialogHeight不是varOptions的子字符串,则代码将产生错误。 执行上述操作的更好方法是:

var match = varOptions.match(/dialogHeight:(\w+)/);
if (match && match.length >= 1) {
    console.log("The value is: " + match[1]);
}

不明白你的问题。 您填写了varOptions,不是吗? 只需为每个选项创建新变量,然后重新使用所有变量即可。

所以像

var dialogHeight = 580;
var dialogWidth = 700;
var center = 'yes';
var scroll = 'no';

var options = 'dialogHeight:'+ dialogHeight +'px;dialogWidth:'+ dialogWidth '+x;center='+ center +';scroll='+ scroll;
var retval = window.showModalDialog(dialog, varArgIn, options);
alert('Reusing dialog height vairable here:'+ dialogHeight);

如果要从给出的字符串中获取dialogHeight,则可以执行以下操作:

var input = 'dialogHeight:580px;dialogWidth:700px;center=yes;scroll=no';
var dialogHeight = input.match(/(?!dialogHeight:)[0-9]*(?=p)/ ,input);
alert(dialogHeight);

http://jsfiddle.net/E67RF/ <-处理此代码

通过以下方式使用正则表达式:

var s= 'dialogHeight:580px;dialogWidth:700px;center=yes;scroll=no';
alert(s.match(/dialogHeight:[\w]+\;/)[0].match(/:[\w]+;/)[0].replace(':',''));

如果您可能需要其他任何值,那么拥有一个将选项字符串转换成字典样式对象的函数将很有用。

function getOptions(s) {
  var r = {}, kv;
  s = s.split(';');
  for (var i = 0; i < s.length; i++) {
    kv = s[i].split(s[i].indexOf(':') > -1 ? ':' : '=');
    r[kv[0]] = kv[1];
  }
  return r;
}
var opts = 'dialogHeight:580px;dialogWidth:700px;center=yes;scroll=no';
var optsObj = getOptions(opts);
console.log(optsObj.dialogHeight);

假设您还没有值,如@Henrik Peinar的答案,则可以从字符串中解析值(只要它遵循示例中的约定)。

您可以通过以下几种方法做到这一点:

1)将字符串格式化为JSON表示法,转换为对象,访问值

var objOptions = JSON.parse("{" + varOptions.replace(/;/g,",").replace(/=/g,":").replace(/(\w+)/g,'"$1"') + "}");

console.log(objOptions.dialogHeight);

2)仅使用RegEx解析您要查找的值(我的示例容易出错,因此在生产中会有所不同。这只是一个简单的示例。)

varOptions.match(/dialogHeight:(\w+);/)[1]

3)使用split获得一组名称/值对数组,然后循环并拆分这些结果,测试“名称”段,直到找到所需的值为止。 (我没时间了,所以我省略了这个例子)

var parseDialogOptions = function() {
  var optionDivider = /\s*;\s*/
    , valueDivider = /\s*[:=]\s*/
    , whiteSpace = /^\s+|\s+$/g

  return function(optionString) {
    var options = optionString.split(optionDivider)
      , obj = {}
    for (var i = 0, l = options.length; i < l; i++) {
      var parts = options[i].split(valueDivider)
      if (parts.length == 2) {
        obj[parts[0].replace(whiteSpace, '')] = parts[1].replace(whiteSpace, '')
      }
    }
    return obj
  }
}()

用法:

>>> parseDialogOptions('dialogHeight:580px;dialogWidth : 700px; center=yes ; scroll=no ; ')
Object { dialogHeight="580px", dialogWidth="700px", center="yes", scroll="no" }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM