嘿,我不知道是否可能,但我想通过引用在js中设置给定变量。
我的目的是,每次将字符串传递给addstring
函数时,文本字段的值都会像+=一样添加。
function addstring(string)
{
document.getElementById("string").value = string; // its a textfield
}
我该如何做到这一点?
嘿,我不知道是否可能,但我想通过引用在js中设置给定变量。
我的目的是,每次将字符串传递给addstring
函数时,文本字段的值都会像+=一样添加。
function addstring(string)
{
document.getElementById("string").value = string; // its a textfield
}
我该如何做到这一点?
function addstring(string)
{
document.getElementById("string").value += string.value;
}
请参见 value 属性。
您的代码示例使用+=
将正常工作;下面是完整的示例。这表明您遇到的问题在其他地方。
<!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>
+=
运行良好。
var str = "stack";
str += "overflow";
console.log(str); //alert(str); Use firebug!!
stackoverflow
sending
中,然后在该值上添加了你的字符串 -- 而这时候与文本框就没有任何关系了。 - T.J. Crowder您可以通过先将对象转换为JSON(注意循环引用)然后再解析它来克隆对象。就像这样:
function clone(obj) {
return JSON.parse(JSON.stringify(obj));
}
这里使用浏览器内置的JSON例程(比使用外部资源更安全和更快)。如果您必须拥有向后兼容性,可以从JSON.org下载核心JSON例程。
document.getElementById("string").value = document.getElementById("string").value + string;
document.getElementById("string").value = document.getElementById("string").value + string;
+=
呢?为什么要多次查找元素? - T.J. CrowderJavascript不支持通过引用传递参数 - 这是不正确的
实际上,它是可以的。原型使得创建真正的引用成为可能,包括字符串在内的所有类型的javascript对象。
所谓真正的引用是指:
要创建一个真正的变量引用:
以这种方式进行的更改将被所有其他TestRef()对象看到并且可以更改。
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