Я использовал offsetHeight
const textarea = document.querySelector("textarea");
const a = document.querySelector("#a");
const input = document.querySelector("input");
const h1 = document.querySelector("h1");
let a_h = a.offsetHeight;
let inp_h = input.offsetHeight;
let h1_h = h1.offsetHeight;
let total_height = a_h + inp_h + h1_h;
textarea.style.height = "calc(100% - " + total_height + "px)";
html, body {
height: 100%;
margin: 0;
overflow:hidden;
}
input[type=text]{
width: 100%;
font-size: 32px;
border: 3px solid #999;
padding: 12px 20px;
margin: 5px 10px;
box-sizing: border-box;
flex: 0 1 auto;
outline: none;
}
div {
display: flex;
}
.fillspace {
display: flex;
height: 100%;
}
input[type=text]:focus{
border: 3px solid #555;
}
button {
background-color: #0099cc;
border: none;
color: white;
text-align: center;
padding: 16px 32px;
text-decoration: none;
display: inline-block;
font-size: 32px;
margin: 5px 10px 5px 0;
}
button:hover{
background-color: #007399;
outline: none;
}
button:active{
background-color: #007399;
}
textarea{
outline: none;
resize: none;
font-size: 32px;
border: 3px solid #999;
padding: 12px 20px;
margin: 5px 10px 10px 10px;
box-sizing: border-box;
width: 100%;
height: 100%;
flex: 1 1 auto;
}
textarea:focus{
border: 3px solid #555;
}
h1{
text-align: center;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
}
<body>
<h1>Command Queue</h1>
<div id="a">
<input placeholder="Type command here" type="text"/>
<button>Run</button>
</div>
<div class="fillspace">
<textarea id="commandOutput">{{.}}</textarea>
</div>
</body>
Хорошо, я немного смущен тем, что вы делаете, но я собираюсь попробовать и внесите несколько предложений.
Вместо использования link_to_function используйте link_to_remote . Ссылка на функцию вызывает javascript, но на самом деле вы хотите вернуться к контроллеру, который затем запускает некоторые rjs, чтобы либо заменить полную часть, либо, что более вероятно, добавить новую часть (содержащую шаг) в конец вашего текущего шаги.
Это похоже на все те примеры, которые вы видели, когда люди добавляют комментарий в конец своих комментариев в блоге (ожидайте использования link_to_remote, а не remote_form_for) см. 3/4 пути через http: // media .rubyonrails.org / video / rails_blog_2.mov
Вы можете увидеть документы для link_to_remote здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html
Я предлагаю использовать link_to_remote
, как предлагает RichH. Уловка для вас, кажется, заключается в отслеживании @i
. Я бы поместил его как параметр URL в link_to_remote
или в объект сеанса. Я бы предложил сеанс - кажется, проще.