Javascript ettings.aiDisplay; //使用所有行 else aiRows=oSettings.aiDisplayMaster;//所有行号 //设置数据数组 var asResultData=新数组(); 对于(变量i=0,c=aiRows.length;i-1)继续; //否则,将值推送到结果数据数组上 否则作为resultdata.push(sValue); } 返回asResultData.sort(); } }(jQuery));
createSelect()在新浏览器中运行良好,而我一直在使用它来尝试一些东西Javascript ettings.aiDisplay; //使用所有行 else aiRows=oSettings.aiDisplayMaster;//所有行号 //设置数据数组 var asResultData=新数组(); 对于(变量i=0,c=aiRows.length;i-1)继续; //否则,将值推送到结果数据数组上 否则作为resultdata.push(sValue); } 返回asResultData.sort(); } }(jQuery));,javascript,jquery,internet-explorer-9,datatables,innerhtml,Javascript,Jquery,Internet Explorer 9,Datatables,Innerhtml,createSelect()在新浏览器中运行良好,而我一直在使用它来尝试一些东西 function fnCreateSelect(aData, j) { switch (j) { case 0: j = "Dest"; break; case 1: j = "Leg"; break; case 2: j = "Start"; break;
function fnCreateSelect(aData, j) {
switch (j) {
case 0: j = "Dest"; break;
case 1: j = "Leg"; break;
case 2: j = "Start"; break;
case 3: j = "End"; break;
case 4: j = "Day"; break;
case 5: j = "Sort"; break;
case 6: j = "Service Days"; break;
}
var r = '<select id="'+j+'"><option value="">' + j + '</option>', i, iLen = aData.length;
for (i = 0 ; i < iLen ; i++) {
r += '<option value="' + aData[i] + '">' + aData[i] + '</option>';
}
return r + '</select>';
}
function fnReCreateSelect(aData, j) {
switch (j) {
case 0: j = "Dest"; break;
case 1: j = "Leg"; break;
case 2: j = "Start"; break;
case 3: j = "End"; break;
case 4: j = "Day"; break;
case 5: j = "Sort"; break;
case 6: j = "Service Days"; break;
}
var s = document.getElementById(j);
var op0 = document.createElement("option");
op0.text = "";
op0.value = j;
s.options.add(op0);
var iLen = aData.length;
for (i = 0 ; i < iLen ; i++) {
var op = document.createElement("option");
op.text = aData[i]
op.value = aData[i];
s.options.add(op);
}
return s;
}
函数fnCreateSelect(aData,j){
开关(j){
案例0:j=“Dest”中断;
案例1:j=“Leg”断裂;
案例2:j=“开始”中断;
案例3:j=“End”中断;
案例4:j=“日”休息;
案例5:j=“Sort”中断;
案例6:j=“工作日”休息;
}
变量r=''+j+'',i,iLen=aData.length;
对于(i=0;i
中。我将更改事件块中的代码移到dom.ready之外。然后,每次重新填充过滤器时,我都会重新注册更改事件
function selectEvent(table, t, i) {
table.fnFilter($(t).val(), i);
// Get array of select controls
var a = document.getElementsByTagName('select');
// Loop through select controls
for (var j = 0; j < 7; j++) {
// If filtered array is not empty
if (filtered.length > 0) {
// If column currently being looped is not in filtered array
if ($.inArray(j, filtered) < 0) {
// If column currently being looped is not the column clicked
if ((t).textContent != a[j + 1].textContent) {
a[j + 1].outerHTML = a[j + 1].outerHTML.replace(a[j + 1].innerHTML + '</select>', fnReCreateSelect(table.fnGetColumnData(j), j) + '</select>'); // Recreate drop down list for currently looping column
}
else {
filtered.push(j); // Add column to filtered array
}
}
else
// If title is selected and currently looping column is the column selected
if ($(t).val() == "" && j == i) {
var index = $.inArray(j, filtered); // Get index of column in filtered array
filtered.splice(index, 1); // Remove column from filtered array
a[i + 1].inner = a[i + 1].outerHTML.replace(a[i + 1].innerHTML + '</select>', fnReCreateSelect(table.fnGetColumnData(i), i) + '</select>'); // Recreate drop down list for column selected (Because resetting drop down)
}
}
else {
// If column currently being looped is not the column clicked
if ((t).textContent != a[j + 1].textContent) {
var temp = fnReCreateSelect(table.fnGetColumnData(j), j);
var temp2 = a[j + 1].innerHTML;
//a[j + 1].innerHTML = fnReCreateSelect(oTable.fnGetColumnData(j), j);
a[j + 1].outerHTML = a[j + 1].outerHTML.replace(a[j + 1].innerHTML + '</select>', fnReCreateSelect(table.fnGetColumnData(j), j) + '</select>'); // Recreate drop down list for currently looping column
var temp3 = 5;
}
else {
filtered.push(j); // Add column to filtered array
}
}
}
$('select').change(this, function () {
selectEvent(oTable, this, this.parentElement.cellIndex);
});
}
函数选择事件(表,t,i){
表.fnFilter($(t).val(),i);
//获取选择控件的数组
var a=document.getElementsByTagName('select');
//循环选择控件
对于(var j=0;j<7;j++){
//如果筛选的数组不为空
如果(过滤的长度>0){
//如果当前正在循环的列不在筛选数组中
如果($.inArray(j,已过滤)<0){
//如果当前循环的列不是单击的列
如果((t).textContent!=a[j+1].textContent){
a[j+1].outerHTML=a[j+1].outerHTML.replace(a[j+1].innerHTML++'',fnReCreateSelect(table.fnGetColumnData(j),j)+'';//为当前循环列重新创建下拉列表
}
否则{
filtered.push(j);//将列添加到已筛选数组
}
}
其他的
//如果选择了标题,并且当前循环列是选定的列
if($(t).val()==“”&&j==i){
var index=$.inArray(j,筛选);//获取筛选数组中列的索引
filtered.splice(索引,1);//从筛选数组中删除列
a[i+1].inner=a[i+1].outerHTML.replace(a[i+1].innerHTML++'',fnReCreateSelect(table.fnGetColumnData(i),i)+'');//为所选列重新创建下拉列表(因为重置下拉列表)
}
}
否则{
//如果当前循环的列不是单击的列
如果((t).textContent!=a[j+1].textContent){
var temp=fnReCreateSelect(表.fnGetColumnData(j),j);
var temp2=a[j+1].innerHTML;
//a[j+1].innerHTML=fnReCreateSelect(oTable.fnGetColumnData(j),j);
a[j+1].outerHTML=a[j+1].outerHTML.replace(a[j+1].innerHTML++'',fnReCreateSelect(table.fnGetColumnData(j),j)+'';//为当前循环列重新创建下拉列表
var-temp3=5;
}
否则{
filtered.push(j);//将列添加到已筛选数组
}
}
}
$('select')。更改(此,函数(){
选择事件(oTable、this、this.parentElement.cellIndex);
});
}
诀窍是使用outerHTML完全替换stea中的select
function fnCreateSelect(aData, j) {
switch (j) {
case 0: j = "Dest"; break;
case 1: j = "Leg"; break;
case 2: j = "Start"; break;
case 3: j = "End"; break;
case 4: j = "Day"; break;
case 5: j = "Sort"; break;
case 6: j = "Service Days"; break;
}
var r = '<select id="'+j+'"><option value="">' + j + '</option>', i, iLen = aData.length;
for (i = 0 ; i < iLen ; i++) {
r += '<option value="' + aData[i] + '">' + aData[i] + '</option>';
}
return r + '</select>';
}
function fnReCreateSelect(aData, j) {
switch (j) {
case 0: j = "Dest"; break;
case 1: j = "Leg"; break;
case 2: j = "Start"; break;
case 3: j = "End"; break;
case 4: j = "Day"; break;
case 5: j = "Sort"; break;
case 6: j = "Service Days"; break;
}
var s = document.getElementById(j);
var op0 = document.createElement("option");
op0.text = "";
op0.value = j;
s.options.add(op0);
var iLen = aData.length;
for (i = 0 ; i < iLen ; i++) {
var op = document.createElement("option");
op.text = aData[i]
op.value = aData[i];
s.options.add(op);
}
return s;
}
function selectEvent(table, t, i) {
table.fnFilter($(t).val(), i);
// Get array of select controls
var a = document.getElementsByTagName('select');
// Loop through select controls
for (var j = 0; j < 7; j++) {
// If filtered array is not empty
if (filtered.length > 0) {
// If column currently being looped is not in filtered array
if ($.inArray(j, filtered) < 0) {
// If column currently being looped is not the column clicked
if ((t).textContent != a[j + 1].textContent) {
a[j + 1].outerHTML = a[j + 1].outerHTML.replace(a[j + 1].innerHTML + '</select>', fnReCreateSelect(table.fnGetColumnData(j), j) + '</select>'); // Recreate drop down list for currently looping column
}
else {
filtered.push(j); // Add column to filtered array
}
}
else
// If title is selected and currently looping column is the column selected
if ($(t).val() == "" && j == i) {
var index = $.inArray(j, filtered); // Get index of column in filtered array
filtered.splice(index, 1); // Remove column from filtered array
a[i + 1].inner = a[i + 1].outerHTML.replace(a[i + 1].innerHTML + '</select>', fnReCreateSelect(table.fnGetColumnData(i), i) + '</select>'); // Recreate drop down list for column selected (Because resetting drop down)
}
}
else {
// If column currently being looped is not the column clicked
if ((t).textContent != a[j + 1].textContent) {
var temp = fnReCreateSelect(table.fnGetColumnData(j), j);
var temp2 = a[j + 1].innerHTML;
//a[j + 1].innerHTML = fnReCreateSelect(oTable.fnGetColumnData(j), j);
a[j + 1].outerHTML = a[j + 1].outerHTML.replace(a[j + 1].innerHTML + '</select>', fnReCreateSelect(table.fnGetColumnData(j), j) + '</select>'); // Recreate drop down list for currently looping column
var temp3 = 5;
}
else {
filtered.push(j); // Add column to filtered array
}
}
}
$('select').change(this, function () {
selectEvent(oTable, this, this.parentElement.cellIndex);
});
}