0

在循环时,我从 json 中获取值,并将值和文本都放入输入复选框,但我得到错误的输出,它与属性值中的文本值不同

我的循环:

$.map(data["allLocales"], function(value, i){
    if(i % 5 === 0 ){
        col0 += "<label><input value="+ value.name +" type='checkbox' />"+value.name+"</label>"
    } else if(i % 5 === 1) {
        col1 += "<label><input value="+ value.name +" type='checkbox' />"+value.name+"</label>"
    } else if(i % 5 === 2) {
        col2 += "<label><input value="+ value.name +" type='checkbox' />"+value.name+"</label>"
    } else if(i % 5 === 3) {
        col3 += "<label><input value="+ value.name +" type='checkbox' />"+value.name+"</label>"
    } else if(i % 5 === 4) {
        col4 += "<label><input value="+ value.name +" type='checkbox' />"+value.name+"</label>"
    }
})

错误 html 的示例:

<label class="blue"><input value="Italian" type="checkbox">Italian</label>
<label class="blue"><input value="Italian" (italy)="" type="checkbox">Italian (Italy)</label>
<label class="blue"><input value="Italian" (switzerland)="" type="checkbox">Italian (Switzerland)</label>

这里有什么问题..?我正在寻找属性和文本值应该相同

4

1 回答 1

2

您似乎没有正确引用您的结果,这在处理空格时尤其重要。例如,

    "<label><input value="+ value.name +" type='checkbox' />"+value.name+"</label>"

当喂食时Italian (italy)被渲染为:

    <label><input value=Italian (italy) type='checkbox' />Italian (italy)</label>

(italy)然后根据 HTML5 规范将其视为空白属性,并赋予"".

要解决此问题,请在输出值的位置周围添加引号:

    "<label><input value='"+ value.name +"' type='checkbox' />"+value.name+"</label>"

现在应该呈现:

    <label><input value='Italian (italy)' type='checkbox' />Italian (italy)</label>

您可能还需要考虑转义'输出值中可能出现的任何字符,但是没有证据表明它们是您当前数据集的一部分。

于 2013-07-15T12:50:46.083 回答