Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Преобразование из string v int (https://javascript.ru/forum/css-html/60290-preobrazovanie-iz-string-v-int.html)

Samsam 21.12.2015 18:36

Преобразование из string v int
 
<div id=aaa>Bla bla bla</div>
<script>
var h = document.getElementById('aaa').offsetHeight;</script>";
$h = "<script>document.write(h);</script>";

<?
if ($h<200) { echo "<ul><b>... ПОЧИТАТЬ ПОЛНОСТЬЮ</b></ul>";}
?>

переменную $h не читает как число.

alex.vv 21.12.2015 19:02

1. Атрибуты тегов принято указывать в двойных кавычках.
То есть надо как минимум
<div id="aaa">Bla bla bla</div>

2. Указанный вами код, вероятно, отработает совсем не так, как ожидается. Вы уверены что скопировали его правильно? (и причем тут короткие php теги?)

3. Для получения числа из строки существуют функции parseInt, parseFloat.
Но в вашем случае извлечение offsetHeight и так дает число, так что вы либо не описали все условия, либо пытаетесь решать какую-то другую проблему.

Samsam 21.12.2015 19:20

Объясню.
Есть блок
<div style="
max-heigh:200px;
overflow: hidden;
"></div>
с не определённой высотой height. мне надо что бы если height>200 то выходила ссылка *почитать дальше* и уже выходил весь текст при нажатие на эту ссылку

Vlasenko Fedor 21.12.2015 19:26

var h = +document.getElementById('aaa').offsetHeight;

рони 21.12.2015 19:31

Samsam,
для медитации
если высота блока не превышает например 100px) ссылка свернуть/развернуть не появлялась?

Samsam 21.12.2015 19:31

Если можно поподробней

Vlasenko Fedor 21.12.2015 19:36

Samsam,
вначале отработает php затем ОТРАБОТАЕТ js
перепиши код с озвученными правками
if ($h<200) //здесь $h = "<script>document.write(h);</script>" строке

Samsam 21.12.2015 20:29

.ta{
height:300px;
}

<script>
jQuery(function($) {
var min = 300;
$(".ta").each(function(indx, el) {
var b = $(el),
max = el.scrollHeight,
a = b.next(".read-next");
if (max <= 300) a.hide();
else a.on("click", function(event) {
var h = b.height();
b.height(h < max ? max : min);
$(this).text(h < max ? "" : "");
return false
})
})
});

</script>
спосибо за подсказку.. а вот как вместо height сдлелать max-height
вместо

.ta{
height:300px;
}

.ta{
max-height:300px;
}
..
что нужно изменить в js

рони 21.12.2015 20:40

Samsam,
непонятно о чём вы? потому что нужен отформатированный макет, а не текст
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

возможно вы хотели это
.css({'max-height' : (h < max ? max : min)+'px'})

Samsam 21.12.2015 20:45

<style type="text/css">
.ta{
    height:100px;
  }
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
</script>

  jQuery(function($) {
    var min = 100;
    $(".ta").each(function(indx, el) {
        var b = $(el),
            max = el.scrollHeight,
            a = b.next(".read-next");
        if (max <= 100) a.hide();
        else a.on("click", function(event) {
            var h = b.height();
            b.height(h < max ? max : min);
            $(this).text(h < max ? "Svernut" : "OPen all");
            return false
        })
    })
});

  
  
  <div style="height:100%">	
    <div class="ta" style="overflow:hidden">
   text<br>text<br>text<br>texttexttexttext<br>text<br>text<br>texttexttext<br>text<br>text<br>texttext<br>text<br>text<br>
    </div><a class="read-next" href="#">Open</a>
  </div>

Samsam 21.12.2015 20:47

Вместо .ta{ height:100px; } мне надо max-height. что надо изменить в js

Samsam 21.12.2015 20:48

.css({'max-height' : (h < max ? max : min)+'px'})
как и где это написать в js ?

рони 21.12.2015 21:44

Samsam,
непонимаю вас.

рони 21.12.2015 22:03

Samsam,
<style type="text/css">
.ta{
    max-height:100px;
  }
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<meta charset="utf-8">
<script>
  jQuery(function($) {
    var min = 100;
    $(".ta").each(function(indx, el) {
        var b = $(el),
            max = el.scrollHeight,
            a = b.next(".read-next");
        if (max <= 100) a.hide();
        else a.on("click", function(event) {
            var h = b.height();
            b.css({'max-height' : (h < max ? max : min)+'px'});
            $(this).text(h < max ? "Svernut" : "OPen all");
            return false
        })
    })
});
</script>

  <div style="height:100%">
    <div class="ta" style="overflow:hidden">
   text<br>text<br>text<br>texttexttexttext<br>text<br>text<br>texttexttext<br>text<br>text<br>texttext<br>text<br>text<br>
    </div><a class="read-next" href="#">OPen all</a>
  </div>

Samsam 21.12.2015 23:14

Спасибо !! Именно то что я хотел !

Samsam 25.12.2015 22:25

Рони, ещё раз извиняюсь. Этот код работает, но как его задействовать в нескольких блоках
например

<div class=ta>где Height = 90</div>
<div class=ta>где Height = 120</div>
<div class=ta>где Height = 233</div>
<div class=ta>где Height = 50</div>

как сделать что бы Open All выходила имена в том блоке где height>100px и при нажатие на ней этот блок раскрывался полностью.
Спасибо

рони 26.12.2015 12:54

Samsam,
а разве код выше этого не делает?


Часовой пояс GMT +3, время: 07:19.