Javascript`onclick`在单独的JS文件中不起作用

时间:2017-04-25 11:42:38

标签: javascript php codeigniter-3

我必须删除一些答案,所以我使用了onclick事件。此事件仅在脚本标记内的相同html页面中起作用,但它不适用于单独的js文件。

editquestion.php

<a href="javascript:void(0);" title="delete" onClick="deleteAnswer('<?php  if($option->answerId != ''){ echo "{$option->answerId}"; } ?>','old');"><i class="icon md-recycle"></i></a>

user.js的

function deleteAnswer(uid,value){
  //alert(uid);
  if(value=='old'){
    $("#answer_form_group_"+uid).empty().hide();
    $("#answer_form_group_"+uid).append("<input type='hidden' name='deleteAnswer[]' value='"+uid+"'>");
    } else {
    $("#answer_form_group_"+uid).remove();
  }
}

function addans(){
$('.addans').unbind("click");
$('.addans').on("click",function(e){
    if ((($('#ansform').find(".form-group").length > 4)&&($("#sel1").val() == "multiplechoice"))||
        (($('#ansform').find(".form-group").length > 1)&&($("#sel1").val() == "trueorfalse"))||
        (($('#ansform').find(".form-group").length > 4)&&($("#sel1").val() == "multipleselect"))){
            noty({ text: 'your exceeded the maximium limit',type: 'error',modal:true,timeout:1000});
    } else {
        if(($('#ansform').find(".form-group").length > 0) &&($("#sel1").val() == "")){
            noty({ text: 'select Type of Question ',type: 'warning',modal:true,timeout:1000});
            } else {
            var uid = generateUid();
            var input_type = ($("#sel1").val() == "multiselect")?"checkbox":"radio";
            $('#ansform').append(     
            '<div class="form-group" id="answer_form_group_'+uid+'">'+
            '<div class="input-group">'+
            '<input type="text" id= "ans_'+uid+'" class="ans form-control input-lg ans inline" placeholder="Write answers here" name="ans[]">'+'&nbsp;&nbsp;'+
            '<input type="hidden" name="crt[]" value="0" />'+
            '<input type="'+input_type+'" id= "ctr_'+uid+'" class="correct" name="crt[]" value="1">'+'&nbsp;&nbsp;'+
            '<a href="javascript:void(0);" title="delete" onClick="deleteAnswer(\''+uid+'\',\'new\')"><i class="icon md-recycle"></i></a>'+
            '</div>'+
            '</div>'
            ); 
        }   
        e.preventDefault();
    }
});
}

function deleteAnswerOption(){
$("#ansform").off('click','.answer-delete');
$('#ansform').on('click', '.answer-delete', function(e) {
    e.preventDefault();
    //alert($(this).parent().parent().parent().attr('class'));
    // $(this).parent().parent().parent().remove();
});
}

所有其他功能都正常运行,但只有这一项显示错误,如Uncaught ReferenceError: deleteAnswer is not defined at HTMLAnchorElement.onclick

5 个答案:

答案 0 :(得分:0)

尝试使用document.ready()

CREATE OR REPLACE TYPE my_type FORCE AS OBJECT
(
   col_1 NUMBER
  ,col_2 NUMBER
);
/
CREATE OR REPLACE TYPE my_nested_table AS TABLE of my_type;
/
DECLARE
  l_table_a     my_nested_table := my_nested_table();
  l_table_b     my_nested_table := my_nested_table();
  l_sort_column NUMBER := 2;
BEGIN
  l_table_a.extend(100);
  FOR l_i IN 1..l_table_a.COUNT LOOP
    l_table_a(l_i) := my_type(ROUND(DBMS_RANDOM.RANDOM,0), ROUND(DBMS_RANDOM.RANDOM,0));
  END LOOP;

   SELECT CAST(
            MULTISET(
              SELECT *
                FROM TABLE(l_table_a)
               ORDER BY DECODE(l_sort_column, 1, col_1
                                            , 2, col_2) DESC
            ) AS my_nested_table
          ) 
      INTO l_table_b
      FROM dual;  

  DBMS_OUTPUT.PUT_LINE('col_1 col_2');
  FOR l_i IN 1..l_table_b.COUNT LOOP
    DBMS_OUTPUT.PUT_LINE(l_table_b(l_i).col_1 || ' ' || l_table_b(l_i).col_2);
  END LOOP;
END;
/

});

$( document ).ready(function() {
    //Paste your functions inside this

答案 1 :(得分:0)

请确保将其放入html的head部分,如下所示

<head> <script type="text/javascript" src="path/to/script.js"></script> <!--other script and also external css included over here--> </head>

将src =“path / to / script.js”替换为js文件的名称。如果它在同一个文件夹中,除了这个

之外你不需要放任何东西
"<script type="text/javascript" src="script.js"></script>"

再次,需要用js文件的名称替换script.js

答案 2 :(得分:0)

deleteAnswer(uid, value)需要两个参数uidvalue

在您的代码中,您通过PHP片段传递第一个参数,其中包含if子句到echo某个值。如果那个PHP片段没有回应什么怎么办?会发生什么?究竟!代码将破裂。

建议:请在您的PHP代码段else中插入echo empty string literal子句。

欢迎你:)

答案 3 :(得分:0)

试试此代码

$(document).ready(function(){
    $('body').on('click','.addans',function(){
       alert('Hello Clieck me')
  })
})

https://jsfiddle.net/ta0ubp8j/3/

答案 4 :(得分:-1)

要检查实际错误,请按以下步骤操作:

  1. 转到editquestion.php页面的浏览器控制台(按f12键)。 2.write deleteAnswer(“xyz”,“”);然后按回车键 3.如果它会给出相同的“deleteAnswer未定义错误”那么将有两个案例四这个错误,否则它将起作用。

    • 您的deleteAnswer函数未全局定义,因此您需要全局定义它。
    • 定义其中的所有javascript代码 $(document).ready(function(){*** your javascript code *******})
  2. 如果这不起作用,那么在浏览器控制台中检查,锚标签将没有正确的deleteAnser函数可能是你的php脚本中断函数语法。