<div class="textfield" contentEditable="true">напиши-ка!
</div>
.textfield {
font-size:16px;
color:white;
min-height:16px;
line-height:20px;
width:200px;
border:1px solid #999;
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACtJREFUeNpiNDY2ZiAXMDFQAEY1j2oe1TyoNLNoOu0nX/P1fY4D42yAAAMA7aYDxR1GwC8AAAAASUVORK5CYII=')
}
body {background:#333; font-family:Arial, sans-serif}
<textarea rows="1" cols="20" id="ta1" class="textfield">напиши-ка!
</textarea>
var ta1 = document.getElementById('ta1');
ta1.addEventListener('input', function(){
var rows = Math.ceil( ta1.scrollHeight / 20 ) - 1;
ta1.style.height = 20 * rows + 'px';
});
closest: function( selectors, context ) {
var cur,
i = 0,
l = this.length,
matched = [],
targets = typeof selectors !== "string" && jQuery( selectors );
// Positional selectors never match, since there's no _selection_ context
if ( !rneedsContext.test( selectors ) ) {
for ( ; i < l; i++ ) {
for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
// Always skip document fragments
if ( cur.nodeType < 11 && ( targets ?
targets.index( cur ) > -1 :
// Don't pass non-elements to Sizzle
cur.nodeType === 1 &&
jQuery.find.matchesSelector( cur, selectors ) ) ) {
matched.push( cur );
break;
}
}
}
}
return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
},
jQuery.find.matchesSelector()
и jQuery.uniqueSort
() <li>
внутри <ul>
(по id). \(\d+\)
совпадает с открывающейся скобкой, одной или несколькими цифрами и закрывающейся скобкой. Эту регулярку заменять на совпавший фрагмент в теге <span>
:$('#catalog>li>a').each(function(){
$(this).html( function(i,t){
return t.replace(/(\(\d+\))/, '<span>$1</span>')
});
});
Fiddle indexOf( ID )
в массиве, задающем порядок сортировки:var data = [
{ID: 1, country: 'England'},
{ID: 4, country: 'USA'},
{ID: 9, country: 'Russia'},
{ID: 5, country: 'Germany'},
{ID: 6, country: 'France'},
];
const order = [5,1,9,6,4];
data.sort((a,b) => order.indexOf(a.ID) - order.indexOf(b.ID));
/* [
{"ID":5,"country":"Germany"},
{"ID":1,"country":"England"},
{"ID":9,"country":"Russia"},
{"ID":6,"country":"France"},
{"ID":4,"country":"USA"}]
*/
data = data.map( e => {e.sortBy = order.indexOf(e.ID); return e;} );
data.sort( (a,b) => a.sortBy - b.sortBy);
var commons = {
el1: document.getElementById('id1')
,el2: document.getElementById('id2')
,el3: document.getElementById('id3')
}
function A( opts ){
opts.el1.innerHTML = 'aaa';
}
function B( opts ){
opts.el1.innerHTML = 'A.A.A.';
opts.el2.innerHTML = 'bbb';
opts.el3.innerHTML = 'ccc';
}
A( commons);
B( commons);
$first = [1,2,3,4,5,6,7,8,9,10];
$second = [ 10,9,8,7,6,5,4];
$unique = array_diff( $first, $second);
echo json_encode($unique); // [1,2,3]
if ($row && password_verify($_POST['auth_pass'], $row['pass'])) {
if( $a && $b) {
выполнится если и $a и $b имеют значение TRUE или переводятся в него. Например "aaa" && "bbb"
. В вашем коде переменная $row и результат функции password_verify() должны быть не NULL, не FALSE, не 0, не пустой строкой.if (isset($_GET['action']) AND $_GET['action']=="logout") {
&&
и AND
– одно и то же. Единственное их отличие в приоритете выполнения по сравнению с другими операторами. sv
, когда эта функция возвращает только str
?function stringTween(){
var sv = [1,2,3];
return function(){
sv[0] = 'a'; sv[1]='b'; sv[2]='c';
return "string";
}
}
stringTween();
sv
? stroke-dasharray
пунктиром. Очень-очень длинным пунктиром, таким, что один штрих захватывает всю окружность. Второй параметр, stroke-dashoffset
, сдвигает этот штрих "из кадра", оставляя видимой нужную его часть – соотв. отображаемому прогрессу.