2015-06-05 200 views
0

我嘗試了兩種不同的方法來調用onclick函數。 像這樣:JS onclick和jQuery之間的區別.click

<input type="button" value="G" id="gras"></input> 
<input type="button" value="I" onclick="insertTag('&lt;italique&gt;', '&lt;/italique&gt;', 'textarea')" /> 

像這樣:

$("#gras").on("click", function() { 
insertTag("&lt;gras&gt;", "&lt;/gras&gt;", "textarea"); }); 

只有第一個工作。 這裏是我的正則表達式:

field = field.replace(/&/g, '&amp;'); 
field = field.replace(/</g, '&lt;').replace(/>/g, '&gt;'); 
field = field.replace(/\n/g, '<br />').replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'); 

field = field.replace(/&lt;gras&gt;([\s\S]*?)&lt;\/gras&gt;/g, '<strong>$1</strong>'); 
field = field.replace(/&lt;italique&gt;([\s\S]*?)&lt;\/italique&gt;/g, '<em>$1</em>'); 

謝謝!

+0

的DOM可能還沒有準備好。在'$(document).ready()'函數中包裝你的'on()'方法。 – George

+0

沒關係,但還沒有工作:/ –

+0

提供您在問題中使用的代碼。 – George

回答

-2

這裏是JS:

$(document).ready(function() { 
 
\t $("#gras").on("click", function() { 
 
\t \t insertTag("&lt;gras&gt;, &lt;/gras&gt;, textarea"); 
 
\t }); 
 
}); 
 
function insertTag(startTag, endTag, textareaId, tagType) { 
 
\t var field = document.getElementById(textareaId); 
 
\t var scroll = field.scrollTop; 
 
\t field.focus(); 
 
\t var startSelection = field.value.substring(0, field.selectionStart); 
 
\t var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd); 
 
\t var endSelection  = field.value.substring(field.selectionEnd); 
 
\t field.value = startSelection + startTag + currentSelection + endTag + endSelection; 
 
\t field.focus(); 
 
\t field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length); 
 
} \t 
 

 
function preview(textareaId) { 
 
\t var field = textareaId.value; 
 
\t field = field.replace(/&/g, '&amp;'); 
 
\t field = field.replace(/</g, '&lt;').replace(/>/g, '&gt;'); 
 
\t field = field.replace(/\n/g, '<br />').replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'); \t 
 
\t field = field.replace(/&lt;gras&gt;([\s\S]*?)&lt;\/gras&gt;/g, '<strong>$1</strong>'); 
 
\t field = field.replace(/&lt;italique&gt;([\s\S]*?)&lt;\/italique&gt;/g, '<em>$1</em>'); 
 
\t document.getElementById("previewDiv").innerHTML = field; 
 
\t console.log(field); 
 
} 
 

 
var area = document.getElementById("textarea"); 
 
preview(area);
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head> 
 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
 

 
<title>WYSIWYG</title> 
 
</script> 
 
</head> 
 
<body> 
 
<div id="main"> 
 
\t <div> 
 
\t \t <p> 
 
\t \t \t <input type="button" value="G" id="gras"></input> 
 
\t \t \t <input type="button" value="I" onclick="insertTag('&lt;italique&gt;', '&lt;/italique&gt;', 'textarea')" /> 
 
\t \t </p> \t 
 
\t </div> \t 
 
\t <textarea id="textarea" cols="150" rows="10"></textarea> 
 
\t <div id="previewDiv"></div> 
 
</div> 
 
<script src="jQuery.js"></script> 
 
<script src="wysiwyg.js"></script> 
 
</body> 
 
</html>

+1

不要在**答案**中爲您的**問題**提供額外信息...您可以隨時隨意編輯您的信息。 –

+0

刪除此答案,並在您的問題中添加此信息。 您只需要1個變量即可呼叫insertTag: 「<gras>,</gras >,textarea」。 這很少見,因爲你的第一個粘貼代碼顯示了其他的東西...... – Gaunt

相關問題