js 错误的字符串输出

js wrong string output

本文关键字:输出 字符串 错误 js      更新时间:2023-09-26

我需要从这个字符串中得到正确的 valeu,我做错了什么?

var i = 0;
var ret = '<option value="19">Dep_01_01</option><option value="20">Dep_01_02</option>';
var pre = ret + '<option value="0">NON</option>';
var count = $($.parseHTML(pre)).filter('option').length;
console.log(pre);
for(i=0; i < count; i++){
    var val_drop = $($.parseHTML(pre)).filter("option[value*='" + i + "']").val();
    var text_drop = $($.parseHTML(pre)).filter("option[value*='" + i + "']").text();
    console.log(val_drop);
}

输出为:

<option value="19">Dep_01_01</option><option value="20">Dep_01_02</option><option value="0">NON</option>
20
19
20

但正确的输出应该是:

19
20
0

你不需要任何函数来做到这一点

var ret = '<option value="19">Dep_01_01</option><option value="20">Dep_01_02</option>';
var pre = ret + '<option value="0">NON</option>';
$(pre).each(function(){
  $('#result').append($(this).val()+" <-----> "+$(this).html()+"<br>");
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result">

相同的方法:

var i = 0;
var ret = '<option value="19">Dep_01_01</option><option value="20">Dep_01_02</option>';
var pre = ret + '<option value="0">NON</option>';
var count = $($.parseHTML(pre)).filter('option').length;
$.each($.parseHTML(pre),function(i,item){
   console.log($(item).val());
});

工作小提琴:https://jsfiddle.net/vhapd1un/

我用 split() 做到了;看看它是否有帮助。

<script>
var i = 0;
var ret = '<option value="19">Dep_01_01</option><option               value="20">Dep_01_02</option>';
var pre = ret + '<option value="0">MON</option>';
var count = $($.parseHTML(pre)).filter('option').length;
console.log(count);
console.log(pre)
for(i=0; i < count+1; i++){
var val_drop = pre.split('<option value="');
val_drop = val_drop[i].split('"')[0];
console.log(val_drop);
}
</script>

首先将元素选项添加到选择中"。

var ret = '<option value="19">Dep_01_01</option><option value="20">Dep_01_02</option>';
var options = ret + '<option value="0">MON</option>';
var elem_txt = '<select>' + options + '</select>'
// Get a DOM object
var elem = $.parseHTML(elem_txt)
var options = elem.find('option')
// for loop
for(var i=0; i<options.length; i++) {
   console.log($(options[0]).val());
}
//jQuery each
options.each(function () {
   console.log($(this).val());
})

您不必每次都使用 parseHTML 重新创建 DOM 对象。

在您的测试中,[value*=...] 的匹配似乎将索引作为字符串匹配,因此您有:

这:

  • 索引:0 -> 20存在 0
  • 索引: 1 -> 1 9 存在 1
  • 索引: 2 -> 2 0 存在 2

我很确定,如果你从 0 到 3 做,你会遇到 3 的问题,因为没有什么与 css 规则匹配。