2015-12-29 46 views
0

我想创建一个JavaScript命令执行..我的意思是,如果我建立一个页面,用一个输入法,那么,输入法的值在JavaScript控制台中执行,然后,该执行的结果应在一个HTML标记被插入为: HTML:Javascript命令插入HTML

<input id="commandInsertion"/> 
<input type="Submit" onclick="doCommand()"> 
<p id="result"></p> 

JavaScript的:

var doCommand = function(x) { 
    // The command should be something like this 
    Execute(x); // Imaginary Function 
    document.getElementById('result').innerHTML = ResultOf(x); 
    // ResultOf() is also an imaginary function 
}; 

doCommand是执行一个指令,然后功能,打印它到文档

+0

通过命令执行,你是说你只是想在浏览器控制台显示该命令吗? – Gjohn

+0

目前还不清楚你的意思是什么* javascript console *,我的解释是:你需要一个函数来做** x **和另一个函数,它将** x **的结果写到文档中,是正确? – AGE

+0

FWIW您不能在'input'元素上设置'innerHTML'的值。请参阅[什么是inputHTML的输入元素?](http://stackoverflow.com/questions/20604299/what-is-innerhtml-on-input-elements)尝试设置'value'属性或使用不同的HTML占位符,可以包含'innerHTML',如'div'。 – gfullam

回答

0

我从你的解释得到了什么,你需要一些东西,例如如下所示:

function getInsertedValue() { 
 
    var txt = document.getElementById('commandInsertion').value; 
 
    updateElem(txt); 
 
} 
 

 
function updateElem(insertedTxt) { 
 
    document.getElementById("updatedTxt").innerHTML = eval(insertedTxt); 
 
}
<div> 
 
    <input type="text" id="commandInsertion" /> 
 
    <span id="updatedTxt"></span> 
 
    <input type="Submit" onclick="getInsertedValue()"> 
 
</div>

+0

您的代码似乎并不完全符合我的要求,但谢谢,我不得不将函数中的insertedTxt从'..ML = insertedTxt..'改为'..ML = eval(insertedTxt)..' –

-1

难道你不是指eval函数?

eval()函数计算或执行参数。

使用它非常小心 - 在它允许用户运行任何JavaScript命令,这是一个很大的安全风险。

2

简单。听说eval?这是一个有趣而危险的功能。它允许您在运行时评估代码。这里有一个例子:

$('#calc').on('input', function() { 
 
    try { 
 
    $('#out').val(eval($('#calc').val())); 
 
    } catch (e) { 
 
    $('#out').val('ERROR!') 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
Input: 
 
<br> 
 
<input id='calc'> 
 
<br>Output: 
 
<br> 
 
<input id='out'>

这很简单,但也EVAL可能是危险的。它可以让攻击者做任何你能做的事情。你可能想在这个读了起来:

Restricting eval() to a narrow scope

因此,这里是你想要的代码:

var doCommand = function() { 
 
    // The command should be something like this 
 
    document.getElementById('output').innerHTML = eval(document.getElementById('commandInsertion').value); 
 
};
<input id="commandInsertion" /> 
 
<div id="output"></div> 
 
<br> 
 
<br> 
 
<input type="Submit" onclick="doCommand()">

+0

你的两个例子似乎都不起作用。也许'eval()'在SO编辑器中被抑制了。 – gfullam

+0

@gfullam [不适合我](http://i.stack.imgur.com/osQor.png) –

+0

我想在输入法中插入一个值,当我点击提交时,它被执行。当我打开控制台(F12) 该函数执行时, 作为: 输入应该有'var Xeiad =“Hello World!”;' 然后当我打开控制台(F12),并键入' console.log(Xeiad);' 应该返回'Hello World!' 通过控制台直接执行'eval()',但不通过获取输入法的值。 您的答案似乎工作,但这不是我想要找到的答案,无论如何,感谢您的帮助,我会尽量使用您的方式从输入法收集数据。 –