How to append a string value during assignment in Javascript?

孤街醉人 提交于 2019-11-27 03:42:28

问题


Hey i dont know if that is possible but i want to set a given variable in js by reference.

What i want to do is, that each time i pass a string to the function addstring that the value of the textfield is added like +=

function addstring(string)
{
    document.getElementById("string").value = string; // its a textfield

}

How can i do that?


回答1:


+= works fine.

var str = "stack";
str += "overflow";

console.log(str); //alert(str); Use firebug!!

stackoverflow




回答2:


Javascript does not support passing parameters by reference.

This link offers a good breakdown and some workarounds- Passing by Value or reference




回答3:


If its a reference to an input text filed then you can use the value property

function addstring(string)
{
    document.getElementById("string").value += string.value;

}

See value




回答4:


Your code example will work just fine with +=; complete example below. This suggests the problem you're having lies elsewhere.

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Test Page</title>
<style type='text/css'>
body {
    font-family: sans-serif;
}
</style>
<script type='text/javascript'>
function addstring(string)
{
    document.getElementById('string').value += string;
}
</script>
</head>
<body><div>
<input type='text' id='string' value=''>
<br><input type='button' value='One' onClick="addstring('one');">
<input type='button' value='Two'     onClick="addstring('two');">
<input type='button' value='Three'   onClick="addstring('three');">
</div></body>
</html>



回答5:


document.getElementById("string").value = document.getElementById("string").value + string;




回答6:


You can clone the object by first converting it to JSON (watch out for circular references) and then parse it back again. Like so:

function clone(obj) {
  return JSON.parse(JSON.stringify(obj));
}

This uses the internal browser's JSON routines (safer & faster than using an external resource). If you simply must have backwards compatibility you can download the core JSON routines from JSON.org.




回答7:


Javascript does not support passing parameters by reference - Not true

Actually it does. Prototyping makes it possible to create true references to all kinds of javascript objects, including strings.

By true reference I mean when:

  • Changes made to a variable or object passed by reference is reflected on the actual variable beeing passed
  • The change is seen by all references to the same variable
  • Everyone knowing the reference may change the referenced variable

To create a true reference to a variable:

  • Create a constructor function
  • Prototype your reference variables on the constructor
  • DO NOT declare variables with the same name inside the constructor function!
  • Create a change() function which changes the prototyped variable or do so directly
  • Optional: Create a change() function-reference inside your constructor which is set to the ChangeRef() function uppon creation

Changes made this way will be seen and may be changed by all other TestRef() objects

function TestRef(s) {
    this.string = 'Own test-string: ' + s;
    this.change = ChangeRef;
}
function ChangeRef(s) {
    TestRef.prototype.refStr = s;
    return TestRef.prototype.refStr;
}
r = 'RefStr';
TestRef.prototype.refStr = r; // PROTOTYPE => 'RefStr', copy of r

s = new TestRef('s'); // Obj.string = Own test-string: s, Obj.refStr = RefStr
o = new TestRef('o'); // Obj.string = Own test-string: o, Obj.refStr = RefStr
ChangeRef('ChangedStr');  // Change referenced string!
TestRef.prototype.refStr; // => ChangedStr, referenced string changed
r; // => RefStr, original string intact
x = new TestRef('x'); // Obj.string = Own test-string: x, Obj.refStr = ChangedStr. New sees changed string
s; // => Obj.string = Own test-string: s, Obj.refStr = ChangedStr. Old sees changed string
o; // => Obj.string = Own test-string: o, Obj.refStr = ChangedStr. Old sees changed string
s.change('Changed by local function');
x; // => Obj.string = Own test-string: o, Obj.refStr = Changed by local function


来源:https://stackoverflow.com/questions/2423868/how-to-append-a-string-value-during-assignment-in-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!