2012-05-06 2 views
1

У меня был следующий скрипт для системы комментариев, прекрасно работающий, пока я не включил параметры в вызов функции. Теперь вместо выполнения функции он просто перезагружает страницу и ударяет меня вверх. (Раньше у меня было это не натыкаясь и красиво вставляя ящик.) Может ли кто-нибудь увидеть ошибку в следующем. Заметьте, я понимаю, что # не является предпочтительным способом вызова функций из ссылки, но другие способы казались довольно сложными для этого простого вызова функции. Большое спасибо.Javascript function anchor onclick синтаксис

Примечание. Эта страница представляет собой текстовую строку, то есть «comments.php», а id и topicid - целые числа.

<script> 
function showReplyBox(id,topicid,thispage) { 
    var replybox = '<form action = "newcomment.php" method = "post"><input type="hidden" name="comid" value="'; 
replybox = replybox+ id + '">'; 
replybox = replybox + '<input type="hidden" name="topicid" value="'; 
replybox = replybox + topicid + '">'; 
replybox = replybox + '<input type="hidden" name="thispage" value="'; 
replybox = replybox + thispage + '">'; 
replybox = replybox + '<textarea autofocus placeholder="Reply to comment" id="replyarea" rows=1 cols=72></textarea><br><button>Reply</button></form>'; 
    var empty = ""; 

document.getElementById('replybox').innerHTML = replybox; 
} 
</script> 
<body> 
//link to call function 
<a href="#" onclick="showReplyBox(44,142,'comments.php');return false">Reply</a 

//box inserted here 
<div id="replybox"></div> 
</body> 

ответ

4

функцию, возвращающую false в конце, чтобы предотвратить поведение после якоря браузеров по умолчанию.

Вот рабочий Fiddle: http://jsfiddle.net/VhYd8/

+0

Комбинируйте свой код и javascript: void внизу, казалось, сделал это. Но только после того, как я вырезал и вставил код из скрипки, это сработало. Что-то было странно в моем синтаксисе. – user1260310

+0

@ user1260310 Хорошо, рад, что это вам помогло! –

4

заменить # в якорный тег с javascript:void(0)

<a href="javascript:void(0);" onclick="showReplyBox(44,142,'comments.php');return false">Reply</a> 
+0

Thx. Я положил это для хорошей меры. – user1260310

0
<body> 
//link to call function 
<a href="#" id="my_a" t_id=44 t_tid=142 t_php="comments.php">Reply</a> 
<script> 
    function showReplyBox(event) { 
     event.preventDefault(); 
     var tar_a = e.target; 
     var id = tar_a .getAttribute("t_id"); 
     var topicid = tar_a .getAttribute("t_tid"); 
     var thispage = tar_a .getAttribute("t_php"); 

     var replybox = '<form action = "newcomment.php" method = "post"><input type="hidden" name="comid" value="'; 
     replybox = replybox+ id + '">'; 
     replybox = replybox + '<input type="hidden" name="topicid" value="'; 
     replybox = replybox + topicid + '">'; 
     replybox = replybox + '<input type="hidden" name="thispage" value="'; 
     replybox = replybox + thispage + '">'; 
     replybox = replybox + '<textarea autofocus placeholder="Reply to comment" id="replyarea" rows=1 cols=72></textarea><br><button>Reply</button></form>'; 
     var empty = ""; 

     document.getElementById('replybox').innerHTML = replybox; 
    } 
    doucument.getElementById("my_a").addEventListener('click',showReplyBox,false); 
</script> 
//box inserted here 
<div id="replyarea"></div> 
</body> 
Смежные вопросы