Вывод кода функции и результата работы.
Здравствуйте, пишу функцию, которая должна выводить в одно поле код функции, а во второе, результат работы этой же функции.
Возник вопрос, выводимый код получается в одну строку, то-есть плохо читаем, как можно сделать переносы строк в нужных местах?, к примеру что бы код выводился точно так же как построен в файле js? И еще вопрос, есть ли возможность раскрасить разные участки выводимого кода, по аналогии как это делают, к примеру текстовые редакторы? <div class="code"></div> <div class="result"></div>
'use strict'
let result = document.querySelector('.result');
let code = document.querySelector('.code');
let sum;
function calc(){
sum = 20 + 15 * 2 / 2;
test(sum);
}
function test(sum){
result.innerHTML = sum;
}
calc();
var codeOut = new calc();
code.innerHTML = codeOut.constructor;
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
document.addEventListener("DOMContentLoaded",function(){
var result = document.querySelector('.result');
var code = document.querySelector('.code');
var sum;
function calc(){
sum = 20 + 15 * 2 / 2;
test(sum);
}
function test(sum){
result.innerHTML = sum;
}
calc();
var codeOut = new calc();
var html=codeOut.constructor.toString();
html=html.replace(/\n/g,'<br />');
code.innerHTML = html;
});
</script>
</head>
<body>
<div class="code"></div>
<div class="result"></div>
</body>
</html>
|
Цитата:
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.number {
color: blue;
}
.operation {
color: red;
}
.words {
font-style: italic;
font-weight: bold;
}
.hooks {
color: green;
}
</style>
<script type='text/javascript'>
document.addEventListener("DOMContentLoaded",function(){
var result = document.querySelector('.result');
var code = document.querySelector('.code');
var sum;
function calc(){
sum = 20 + 15 * 2 / 2;
return test(sum);
}
function test(sum){
result.innerHTML = sum;
}
calc();
var codeOut = new calc();
var html=codeOut.constructor.toString();
html=html.replace(/\t+\}$/,'}');
html=html.replace(/([-+\/*=])/g,'<span class="operation">$1</span>');
html=html.replace(/(function|return)/g,'<span class="words">$1</span>');
html=html.replace(/([\(\)\{\}\[\]])/g,'<span class="hooks">$1</span>');
html=html.replace(/(\d+)/g,'<span class="number">$1</span>');
html=html.replace(/\n/g,'<br />');
html=html.replace(/\t/g,' ');
code.innerHTML = html;
});
</script>
</head>
<body>
<div class="code"></div>
<div class="result"></div>
</body>
</html>
|
Цитата:
Цитата:
Код без элемента <code> семантически недопустим. Согласно спецификации HTML5, рекомендуемый способ определения языка кода является класс language-xxxx.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.16.0/themes/prism-tomorrow.css">
<style>
:not(pre) > code[class*="language-"] {
display: block;
padding: 1em;
white-space: pre;
}
</style>
</head>
<body>
<code class="language-javascript">
function calc() {
let sum = 20 + 15 * 2 / 2;
return sum;
}
calc();
</code>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.16.0/prism.js"></script>
<script>
for(const code of document.querySelectorAll("code[class*='language-javascript']")) {
const p = document.createElement("p");
code.after(p);
p.textContent = eval(code.textContent);
}
</script>
</body>
</html>
Хотя весь код можно выполнить в песочнице <iframe sandbox> Цитата:
|
Цитата:
Мне твое занудство не интересно... :no: |
Цитата:
Я посоветовал человеку адекватное решение проблемы, которое можно использовать в production... Цитата:
ksa, у меня к вам просьба, чтобы вы удаляли из шаблона код, который не имеет отношения к делу, перед отправкой ваших ответов. Заранее благодарю! |
Спасибо
|
| Часовой пояс GMT +3, время: 04:41. |