如何有条件地修改全局对象的内容?

时间:2013-12-21 17:27:05

标签: javascript jquery object replace global-variables

我有一个名为inputType的全局var,它是一个冗长的对象:

inputType = {
part1: 'string',
part2: 'string2',
...
part100:'last string'
}

在另一段代码中,我有一些接收数值的输入字段。我想改变var对象字符串的某些部分:

<input id='input1'>First input

代码:

$(document).ready(function(){

$('#input1').blur(function (){
 var inp = parseInt($('#input1').val(), 10);

 if (inp <10) {
 inputType.part2.replace(/string2/,'some other string'); 
}

});
});

// Then I call this modified  inputType.part2 object in another function

//当条件满足时,我似乎无法影响字符串更改?当我尝试在另一个脚本中调用此特定对象属性时,不会执行字符串更改。当我尝试这个时,我也无法在DOM检查器上看到这种变化。但是当我在控制台上尝试时,此语法将执行replace函数。

如何在满足条件时替换或修改inputType.part2,然后在另一段代码中使用修改后的对象?

对象很难!

感谢。

2 个答案:

答案 0 :(得分:1)

首先

Name您的对象。然后尝试使用该名称访问它。

var xObj = {
part1: 'string',
part2: 'string2',
...
part100:'last string'
}

.....

if (inp <10) {
  xObj.part2.replace(/string2/,'some other string'); 
}

修改

.replace()不会修改源字符串。我们必须将.replace()的结果分配回源以完成修改。

Conceptual DEMO

您的代码应该是这样的,

if (inp <10) {
 xObj.part2 = xObj.part2.replace(/string2/,'some other string'); 
}

请阅读here以了解有关.replace()

的更多信息

答案 1 :(得分:0)

试试这个:

window.InputVal = {
   part1: 'string',
   part2: 'string2',
   ...
   part100:'last string'
}

.....

if (inp <10) {
  window.InputVal.part2 = window.InputVal.part2.replace(/string2/,'some other string'); 
}

使用新值“更新”window.InputVal.part2。只有.replace不会覆盖旧值。

例如:

// define "x"
window.InputVal.x = 1;

// replace value
window.InputVal.x.toString().replace(/1/,'2');

// show
console.log(window.InputVal.x)
// will print 1

// but..if you do:

window.InputVal.x = window.InputVal.x.toString().replace(/1/,'2');
// will print '2'