Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么jQuery append()会删除字符串中第一个空格后的单词_Javascript_Jquery - Fatal编程技术网

Javascript 为什么jQuery append()会删除字符串中第一个空格后的单词

Javascript 为什么jQuery append()会删除字符串中第一个空格后的单词,javascript,jquery,Javascript,Jquery,我试图在ajax请求后动态生成表单。以下是相关的代码示例: for (var i in response.responseJSON[0].fields) { var field = response.responseJSON[0].fields[i]; $('#properties_form').append('<label for=' + i + '>' + i + '</label>' + '<input id='

我试图在ajax请求后动态生成表单。以下是相关的代码示例:

for (var i in response.responseJSON[0].fields) {
  var field = response.responseJSON[0].fields[i];
  $('#properties_form').append('<label for=' + i + '>' + i + '</label>' +
                    '<input id=' + i + ' value=' + field + '>');
}
for(响应中的变量i.responseJSON[0]。字段){
var field=response.responseJSON[0]。字段[i];
$(“#属性_形式”)。附加(“”+i+“”)+
'');
}
我的问题是,当
var i
var field
是带有空格的字符串,如
“Hello world”
,我的标签和输入将类似于
。但是,标签文本将正确显示,即
Hello world

我不知道那是什么巫术,但我非常感谢你的帮助。提前感谢。

使用
将属性括起来

$('#properties_form')
      .append('<label for="' + i + '">' + i + '</label>' +
                '<input id="' + i + '" value="' + field + '">');

有一种更可靠的方法可以做到这一点

for (var i in response.responseJSON[0].fields) {
  var field = response.responseJSON[0].fields[i];
  $('#properties_form')
     .append($('<label>').attr('for', i).text(i))
     .append($('<input>').attr('id', i).val(field));
}
for(响应中的变量i.responseJSON[0]。字段){
var field=response.responseJSON[0]。字段[i];
$(“#属性#形式”)
.append($('').attr('for',i).text(i))
.append($('').attr('id',i).val(字段));
}

你不必担心字符串的内容,因为jQuery和DOM会为你处理它。更不用说这更容易阅读了。

你应该考虑使用<代码> Att/<代码>和<代码>文本<代码>,而不是String CONTAT。因为没有引号,HTML属性不能有空格。你的代码工作得很好,只是你没有WR。这是你想要的代码:)确实是这样,谢谢!为什么使用双引号解决了这个问题?@MehdiB你必须将属性包含在字符串中。这是因为字符串中有一个空格,HTML属性是空格分隔的。因此浏览器将其视为
Hello World
,渲染为
Hello World
@AnttiHaap最简单的解决方法是丹尼尔现在发布的答案。所以,我不会像那样更新答案。甚至比以前的答案更好。