如何在Javascript赋值期间追加字符串值?

如何在Javascript赋值期间追加字符串值?,javascript,variable-assignment,Javascript,Variable Assignment,嘿,我不知道这是否可行,但我想通过引用在js中设置一个给定的变量 我想做的是,每次我将字符串传递给函数addstring,文本字段的值就会像+= function addstring(string) { document.getElementById("string").value = string; // its a textfield } 我该怎么做呢?document.getElementById(“string”).value=document.getElementById(

嘿,我不知道这是否可行,但我想通过引用在js中设置一个给定的变量

我想做的是,每次我将字符串传递给函数
addstring
,文本字段的值就会像+=

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

}

我该怎么做呢?

document.getElementById(“string”).value=document.getElementById(“string”).value+string

+=
工作正常

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

console.log(str); //alert(str); Use firebug!!
堆栈溢出


如果是对输入文本字段的引用,则可以使用value属性

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

}

请参阅

Javascript不支持通过引用传递参数


此链接提供了一个很好的细分和一些解决方法-

您的代码示例可以很好地使用
+=
;完成下面的示例。这表明你的问题在别处

<!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>

测试页
身体{
字体系列:无衬线;
}
函数addstring(字符串)
{
document.getElementById('string')。value+=string;
}


Javascript不支持通过引用传递参数-不正确

事实上是的。原型设计使创建对所有类型javascript对象(包括字符串)的真实引用成为可能

我所说的真实参照系指:

  • 对变量或对象所做的更改 通过引用传递的是 反映在实际变量上 比林过去了
  • 所有人都看到了这种变化 对同一变量的引用
  • 每个知道参考资料的人都可能 更改引用的变量
要创建对变量的真实引用,请执行以下操作:

  • 创建构造函数
  • 在上原型化您的参考变量 构造器
  • 不要使用 构造函数中的相同名称 功能
  • 创建一个change()函数 更改原型变量或 如此直接
  • 可选:创建change()函数引用 在已设置的构造函数中 到ChangeRef()函数uppon 创作
以这种方式进行的更改将被看到,并且可能会被所有其他TestRef()对象更改


您可以首先将对象转换为JSON(注意循环引用),然后再次解析它,从而克隆该对象。像这样:

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

这将使用内部浏览器的JSON例程(比使用外部资源更安全、更快)。如果您只是需要向后兼容,您可以从JSON.org下载核心JSON例程。

您的意思是为元素值分配一个字符串引用,以便在字符串更改时值也会更改吗?我不清楚您的实际问题涉及通过引用传递。这是在问题不清楚时发生的情况,你会得到很多混杂的答案,这些答案只是在猜测所问问题的真正含义。嗯。。问题更多的是关于字符串连接,是吗?我对“引用变量”感到困惑P“通过引用传递变量”与提供的示例无关为什么不使用
+=
?为什么要多次查找该元素?谢谢你的快速回答,不幸的是+=不起作用,我不知道why@streetparade:是的。这表明问题出在其他地方。@streetparade:显示要添加的代码和得到的错误。(在firefox上使用firebug(附加组件),或者在Chrome上使用开发者工具(ctrl+shift+j)。。这对我来说是有效的document.getElementById(“string”).value+=string;但这不起作用:var sending=document.getElementById(“string”).value;发送+=字符串@streetparade:是的,因为你在那里做的是将文本框内容的值检索到
发送
,然后将你的字符串添加到该值中——这与文本框无关。记住a+=b是a=a+b的简写,它不是array.push(foo)的字符串版本这会改变数组本身。使用引用!=通过参考传递。我们所指的真正的传递引用,例如在C++中,是可以将变量传递到函数中(不创建一些“引用”对象;而是直接传递变量),并且函数可以赋值给该变量(不调用它上的一些方法;赋值),就像变量被赋值在原始范围内一样。这在JavaScript中是不可能的。
function clone(obj) {
  return JSON.parse(JSON.stringify(obj));
}