我正在使用IE 11来模拟旧版本的IE。以下代码在 IE 9及以下:
中无法正常工作var search_input_val = $.trim($("#search_input").val()).replace(/\s{2,}/g, ' ');
console.log(search_input_val);
var recBox_val_arr = search_input_val.split(/\s+/); // HERE
console.log(recBox_val_arr);
recBox_val_arr
以undefined
的身份登录到控制台。
以上代码在IE 10和11,Firefox,Chrome,Opera和Safari上返回Array
。为什么它不能在IE 9及以下版本中运行?
鉴于这种情况:
$("#search_input").val() === "ab abc";
search_input_val === "ab abc";
recBox_val_arr
被IE≤9记录为undefined
,Firefox记录为[object Array]
,其他浏览器记录为["ab", "abc"]
。
我通过谷歌的CDN链接到jQuery 1.10.2:
//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
我也尝试了recBox_val_arr = search_input_val.split(' ')
,但recBox_val_arr
仍然记录为undefined
。
答案 0 :(得分:2)
console.log
的实现被破坏
旧的IE实现split
确实存在错误,但这不是问题所在。实际上,split
工作得很好 - 真正的问题是IE 11在模拟IE 9时被console.log
的实施失败:
console.log("test test".split(/\s+/)) // logs "undefined"
"test test".split(/\s+/) // logs "[object Array]"
更一般地说,模拟IE 9的IE 11中的console.log
不支持记录对象或数组:
console.log("foo"); // logs "foo"
console.log({ foo: "bar" }) // logs "undefined"
console.log(["foo"]) // logs "undefined"
最糟糕的是,这与IE 9 实际的行为方式无法相提并论。如果您直接在VM上运行IE 9,这就是您所获得的:
console.log("test test".split(/\s+/)) // logs "test,test"
console.log
完全被打开了。答案 1 :(得分:1)
$(document).ready(function(){
$( “按钮”)。点击(函数(){
var search_input_val = $ .trim($(“#search_input”)。val())。replace(/ \ s {2,} / g,'');
的console.log(search_input_val);
var recBox_val_arr = search_input_val.split(/ \ s + /); // - 这里 -
的console.log(recBox_val_arr);
的console.log(recBox_val_arr [0]);
的console.log(recBox_val_arr [1]);
的console.log(recBox_val_arr [2]);
});
});
用
创建身体
<体>
< input type =“text”id =“search_input”/>
<按钮>提交< /按钮>
< /体>
console.log(recBox_val_arr);
输入=>你好123 hi
输出=> [“你好”,“123”,“hi”]
PHP中的分割功能用于将字符串分解为数组。
的console.log(recBox_val_arr [0]); == 你好
的console.log(recBox_val_arr [1]); == 123
的console.log(recBox_val_arr [2]); == hi
如果你把console.log()放在$(“button”)之外。点击(function(){});那么该值最初将显示为“未定义”。
因为它无法从文本框中获取价值。