2016-07-13 5 views
1

Здесь я получаю массив значений ширины. Так как он содержит px в конце каждого элемента. Мне нужно обрезать px и сохранить его в массиве.Как обрезать последние два символа каждого элемента массива?

HTML

<table id="mytable"> 
    <thead> 
    <tr> 
     <th style="width:40px;display:none;">Head1</th> 
     <th style="width:50px">Head2</th> 
     <th style="width:60px">Head3</th> 
     <th style="width:70px">Head4</th> 
     <th style="width:80px">Head5</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td style="width:40px;display:none;">1</td> 
     <td style="width:50px">2</td> 
     <td style="width:60px">3</td> 
     <td style="width:70px">4</td> 
     <td style="width:80px">5</td> 
    </tr> 
    </tbody> 
</table> 

Jquery

var listWidth = $("#mytable tr th").map(function() { 
    if($(this).is(":visible")){ 
    return this.style.width; 
    } 
}).get(); 
for (var i = 0; i < listWidth.length; i++) { 
    listWidth[i].slice(0, -1); 
} 
console.log(listWidth); 

Я попытался с помощью slice, но, ни результата.

Demo fiddle

+1

Фактически есть результат, но вы игнорируете его. –

+1

Если формат всегда похож на «30px», вы можете использовать parseInt (строка, 10); Еще да, сопоставьте массив и вырежьте последние два символа. – Shilly

+1

Я знаю, что каждый предложит вам лучший способ, но для вашего понимания вы не сохраняете результат среза, поэтому 'listWidth [i] = listWidth [i] .slice (0, -1);' должен работать – bugwheels94

ответ

4
  1. Чтобы получить Инлайн width

    Я хочу рядный стиле ширина CSS

    var listWidth = $("#mytable tr th:visible").map(function() { 
        return parseInt(this.style.width, 10); 
    }).get(); 
    

    Fiddle Demo

  2. Чтобы вычислить ширину

    Использование width(). width() даст вам числовую ширину без px.

    var listWidth = $("#mytable tr th:visible").map(function() { 
        return $(this).width(); 
    }).get(); 
    

    Updated Fiddle

  3. Чтобы получить рядный width если еще получить настоящее вычисляться ширина

    var listWidth = $("#mytable tr th:visible").map(function() { 
        return parseInt(this.style.width, 10) || $(this).width(); 
    }).get(); 
    

    Updated Fiddle

+0

не будет работать в [this] (https://jsfiddle.net/iamraviteja/uvjgvghs/) case – Raviteja

+0

@Hazard Если вы проверите «консоль» демонстрации, которую вы указали, она покажет «[47, 53, 59, 65] '. Таким образом, 'width()' дает правильное значение, даже если оно не установлено. – Tushar

+0

Я хочу встроенную стилизованную ширину css – Raviteja

1

Если все, что вы хотите, чтобы пропустить px в массиве вы можете использовать parseInt функцию:

var listWidth = $("#mytable tr th").map(function() { 
    if($(this).is(":visible")){ 
    return parseInt(this.style.width, 10); 
    } 
}).get(); 
console.log(listWidth); 

demo

2

Try:

демо: https://jsfiddle.net/pn9pr0zz/

var listWidth = $("#mytable tr th").map(function() { 
if($(this).is(":visible")){ 
    return $(this).css("width").slice(0,-2); // get width using .css() and use .slice() over here to remove px from string 
    } 
}).get(); 
console.log(listWidth); 
0
var listWidth = $("#mytable tr th").map(function() { 
if($(this).is(":visible")){ 
    return this.style.width; 
    } 
}).get(); 
var arr = [] 
for (var i = 0; i <= listWidth.length ; i++) { 
     if (listWidth[i] === undefined) { 
      break; 
    } 
     var lWidth = listWidth[i].replace(/px/, ""); 
    arr.push(lWidth); 
} 
console.log(arr) 
0

$(document).ready(function() { 
 
    var listWidth = $("#mytable tr th").map(function() { 
 
     if ($(this).is(":visible")) { 
 
      return this.style.width; 
 
     } 
 
    }).get(); 
 
    for (var i = 0; i < listWidth.length; i++) { 
 
     listWidth[i] = listWidth[i].slice(0, -2); //PAY ATTENTION HERE 
 
    } 
 
    console.log(listWidth); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="mytable"> 
 
    <thead> 
 
     <tr> 
 
     <th style="width:40px;display:none;">Head1</th> 
 
     <th style="width:50px">Head2</th> 
 
     <th style="width:60px">Head3</th> 
 
     <th style="width:70px">Head4</th> 
 
     <th style="width:80px">Head5</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
     <tr> 
 
     <td style="width:40px;display:none;">1</td> 
 
     <td style="width:50px">2</td> 
 
     <td style="width:60px">3</td> 
 
     <td style="width:70px">4</td> 
 
     <td style="width:80px">5</td> 
 
     </tr> 
 
    </tbody> 
 
    </table>

Смежные вопросы