在以下标准函数中,您可以为第二个和第三个参数输入多个参数。
var retval = window.showModalDialog(dialog, varArgIn, varOptions);
varOptions 参数可以填写:
'dialogHeight:580px;dialogWidth:700px;center=yes;scroll=no',
如何获得在 dialogHeight 中设置的唯一值?所以我只能在其他地方重用那个值。
在以下标准函数中,您可以为第二个和第三个参数输入多个参数。
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" }