2015-12-29 77 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()',但不通過獲取輸入法的值。 您的答案似乎工作,但這不是我想要找到的答案,無論如何,感謝您的幫助,我會盡量使用您的方式從輸入法收集數據。 –