2017-01-31 7 views
-1

내 코드에서 무언가를했다면 용서해주세요. 자바 스크립트/jquery를 수행하는 방법을 보여주지 않았고 Google 검색에서 다른 코드를 사용했습니다. 스크립팅 및 vb.net. 그러니 나를 완전한 초심자로 대하십시오.null 값의 속성 'value'을 읽을 수 없다 - Greasemonkey Script

나는 Greasemonkey/Tampermonkey 스크립트를 작성하여 Service-Now의 텍스트를 대체합니다. 기본적으로 사용자 메모 내의 INC 또는 FNAME과 같은 태그를 찾은 다음 해당 데이터로 service-now 필드로 대체합니다. 기본적으로 정보로 템플릿을 자동 완성할 수 있습니다.

내가 스크립트의 문제로 실행하고

, 언제 내가이 후로드 확인했다 이전 포스트에서

Uncaught TypeError: Cannot read property 'value' of null 
at HTMLInputElement.eval (eval at E_c (:3:114), <anonymous>:46:88) 
at HTMLInputElement.dispatch (eval at E_c (:3:114), <anonymous>:7:8436) 
at HTMLInputElement.r.handle (eval at E_c (:3:114), <anonymous>:7:5139) 

진술 내가 크롬의 콘솔에서 오류를 표시하고 태그를 입력 할 수있는 버튼을 클릭합니다 페이지가 // @ run-at document-idle으로 끝납니다.

이것은 현재 코드입니다. 일부는 작업 영역을 숨기도록 변경되었습니다. 이 코드의

// ==UserScript== 
// @name  Templates Plus v2 
// @namespace https://MYSITE.service-now.com/* 
// @include  https://MYSITE.service-now.com/* 
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js 
// @run-at document-idle 
// @version  1 
// @grant GM_addStyle 
// ==/UserScript== 

(function() { 
    var add=''; 
      var buttonElems; 
      switch(i){ 
       case 0: 
        buttonElems = document.getElementById('label.incident.work_notes'); 
        break; 
        case 1: 
        buttonElems = document.getElementById('ni.incident.u_fcr').parentElement; 
        //var buttonElems = document.getElementById('incident.form_header'); 
        break; 
      } 
      add = add + '<input id="tpbutton" type="button" value="Template Plus" class="form_action_button">'; //Template Plus Button 
    buttonElems.innerHTML = buttonElems.innerHTML + add; 
    $("#tpbutton").click(function(){ 

    var TemplatePlus_f_AdditionalComments = document.getElementById("incident.comments")[0]; 
    var TemplatePlus_f_WorknotesComments = document.getElementById("incident.work_notes")[0]; 
    var TemplatePlus_f_ShortDescription = document.getElementById("incident.short_description")[0]; 
    var TemplatePlus_f_Resolution = document.getElementById("incident.close_notes")[0]; 

    var TemplatePlus_FirstName=(" "); 
    var TemplatePlus_LastName=(" "); 
    var TemplatePlus_MidName=(" "); 
    var TemplatePlus_UserID=(" "); 
    var TemplatePlus_UserEmail = document.getElementById("sys_readonly.incident.caller_id.email").value; 
    var TemplatePlus_Company = document.getElementById("sys_display.incident.company").value; 
    var TemplatePlus_Location = document.getElementById("sys_display.incident.location").value; 
    var TemplatePlus_Callback = document.getElementById("incident.u_call_back_number").value; 
    var TemplatePlus_Name = document.getElementById("sys_display.incident.caller_id").value; 

    var TemplatePlus_ConfigItem = document.getElementById("sys_display.incident.cmdb_ci").value; 
    var TemplatePlus_INC = document.getElementById("sys_readonly.incident.number").value; 
    var TemplatePlus_ATo = document.getElementById("sys_display.incident.assigned_to").value; 

     TemplatePlus_FirstName.value=TemplatePlus_Name.substr(TemplatePlus_Name.indexOf(',')+1); 
     TemplatePlus_LastName.value=TemplatePlus_Name.substr(0,TemplatePlus_Name.indexOf(',')); 
     TemplatePlus_MidName.value=TemplatePlus_Name.substr(TemplatePlus_Name.indexOf(' ')+1); 
     TemplatePlus_UserID.value=TemplatePlus_LastName.substr(0,6)+TemplatePlus_FirstName.substr(0,1)+TemplatePlus_MidName.substr(0,1); 

      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<SDESC>",TemplatePlus_f_ShortDescription.value); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<FNAME>",TemplatePlus_FirstName); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<LNAME>",TemplatePlus_LastName); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<UNAME>",TemplatePlus_UserID); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<COMPANY>",TemplatePlus_Company); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<EMAIL>",TemplatePlus_UserEmail); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<CALL>",TemplatePlus_Callback); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<INC>",TemplatePlus_INC); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<CONFIGITEM>",TemplatePlus_ConfigItem); 

      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<SDESC>",TemplatePlus_f_ShortDescription.value); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<FNAME>",TemplatePlus_FirstName); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<LNAME>",TemplatePlus_LastName); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<UNAME>",TemplatePlus_UserID); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<COMPANY>",TemplatePlus_Company); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<EMAIL>",TemplatePlus_UserEmail); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<CALL>",TemplatePlus_Callback); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<INC>",TemplatePlus_INC); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<CONFIGITEM>",TemplatePlus_ConfigItem); 

      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<SDESC>",TemplatePlus_f_ShortDescription.value); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<FNAME>",TemplatePlus_FirstName); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<LNAME>",TemplatePlus_LastName); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<UNAME>",TemplatePlus_UserID); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<COMPANY>",TemplatePlus_Company); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<EMAIL>",TemplatePlus_UserEmail); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<CALL>",TemplatePlus_Callback); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<INC>",TemplatePlus_INC); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<CONFIGITEM>",TemplatePlus_ConfigItem); 

      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<SDESC>",TemplatePlus_f_ShortDescription.value); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<FNAME>",TemplatePlus_FirstName); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<LNAME>",TemplatePlus_LastName); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<UNAME>",TemplatePlus_UserID); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<COMPANY>",TemplatePlus_Company); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<EMAIL>",TemplatePlus_UserEmail); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<CALL>",TemplatePlus_Callback); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<INC>",TemplatePlus_INC); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<CONFIGITEM>",TemplatePlus_ConfigItem); 
}); 
})(); 

부분은 친구 나 또한 지금 서비스를 사용하는 작업에 사용되는 또 다른 장소에서 쓴 하나 개의 코드를 기반으로, 자신의 스크립트는 자신의 페이지에 잘 작동하지만, 우리에 전혀 실행하지 않을 것입니다.

나는 버튼을 클릭 할 때 호출자/사고 번호 또는 다른 값을 읽는 코드는 버튼을 클릭 할 때까지 실행해서는 안되며 그 시간에 검색하는 모든 값 그 때까지는 모두 이용할 수 있어야합니다.

+1

getElementById는 배열이 아닌 단일 요소를 반환하므로 [0]이 필요하지 않습니다. 다른 것이 있으면 사이트를 보지 않고 말하기가 어렵습니다. 디버거를 둠으로써; 코드를 작성하고 페이지를 다시로드하면 devtools를 호출하여 제대로 디버깅 할 수 있습니다. 변수를 확인하고 코드별로 단계별로 살펴보십시오. Chrome + Tampermonkey에서 작동합니다. – wOxxOm

+0

그 트릭을 했어, 디버깅을 활성화하고 나는 오류가 발생했다 볼 수 있었다, 나는 또한 서비스가 지금 입력 한 필드에 대한 값이 표시되지 않습니다, 그래서 이름이 이름 필드에 채워진 경우에도 그것은 값을 보여줍니다 검사입니다 null –

+0

해당 코드에는 여러 가지 문제가 있으며 스택 오버플로는 코드 검토 또는 코드 작성 서비스가 아닙니다. 그래서,이 질문은 여기에 적합하지 않습니다. 디버깅을 계속하고 MCVE의 문제를 끓여서 질문 할 수 있습니다. 또는 *** 실제 *** 스크립트 (여기에 게시 된 내용이 아님)에서 30 분을 제공 할 수있는 JS 프로그래머를 찾으십시오. 몇 가지 이슈는''getElementById()'의 끝에있는'[0]', 정의되지 않은/부적절한'replaceAll','innerHTML'에 대한 모든 조언, DRY 메소드 대 jQuery 대량로드 및 붙여 넣기 코드입니다. –

답변

0

위의 응답에 따라 wOxxOm이 제안한대로 코드를 디버그하고 문제를 해결할 수있었습니다. 네 개의 변수에서 [0]을 제거한 다음 모든 변수가 서비스에서 볼 수 없으므로 이제는 버튼을 클릭하기 전에 먼저 변수를 표시하십시오. 나는 또한 지금 바로 오른쪽 상단 모서리에 그것을 쑤시는 온도 픽스를 가지고 표시 버튼을 받고 문제가 있었다.

아래와 같이 작업 코드를 게시합니다.

// ==UserScript== 
// @name  Templates Plus v2 
// @namespace https://MYSITE.service-now.com/* 
// @include  https://MYSITE.service-now.com/* 
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js 
// @run-at document-end 
// @version  1 
// @grant GM_addStyle 
// ==/UserScript== 
(function() { 
    var tpbutton = document.createElement("Button"); 
    tpbutton.innerHTML = "TemplatePlus"; 
    tpbutton.style = "top:0;right:0;position:absolute;z-index: 10"; 
    tpbutton.id="tpbutton"; 
    document.body.appendChild(tpbutton); 
     $("#tpbutton").click(function(){ 
      var TemplatePlus_f_AdditionalComments = document.getElementById("incident.comments"); 
      var TemplatePlus_f_WorknotesComments = document.getElementById("incident.work_notes"); 
      var TemplatePlus_f_ShortDescription = document.getElementById("incident.short_description"); 
      var TemplatePlus_f_Resolution = document.getElementById("incident.close_notes"); 

      var TemplatePlus_FirstName=(" "); 
      var TemplatePlus_LastName=(" "); 
      var TemplatePlus_Name=(" "); 
      var TemplatePlus_UserID=(" "); 
      var TemplatePlus_UserEmail=(" "); 
      var TemplatePlus_Location=(" "); 
      var TemplatePlus_Callback=(" "); 
      var TemplatePlus_ConfigItem=(" "); 
      var TemplatePlus_INC=(" "); 
      var TemplatePlus_ATo=(" "); 

      TemplatePlus_INC = document.getElementById("sys_readonly.incident.number").value; 
      TemplatePlus_FirstName=document.getElementById("sys_readonly.sys_user.first_name").value; 
      TemplatePlus_LastName=document.getElementById("sys_readonly.sys_user.last_name").value; 
      TemplatePlus_UserID=document.getElementById("sys_readonly.sys_user.user_name").value; 
      TemplatePlus_Name=document.getElementById("sys_readonly.sys_user.name").value; 
      TemplatePlus_Callback=document.getElementById("sys_readonly.sys_user.phone").value; 
      TemplatePlus_UserEmail=document.getElementById("sys_readonly.sys_user.email").value; 
      TemplatePlus_Location=document.getElementById("sys_user.location_label").value; 

      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replace("<SDESC>",TemplatePlus_f_ShortDescription.value); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replace("<FNAME>",TemplatePlus_FirstName); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replace("<LNAME>",TemplatePlus_LastName); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replace("<UNAME>",TemplatePlus_UserID); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replace("<EMAIL>",TemplatePlus_UserEmail); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replace("<CALL>",TemplatePlus_Callback); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replace("<INC>",TemplatePlus_INC); 
      TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replace("<CONFIGITEM>",TemplatePlus_ConfigItem); 

      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replace("<SDESC>",TemplatePlus_f_ShortDescription.value); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replace("<FNAME>",TemplatePlus_FirstName); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replace("<LNAME>",TemplatePlus_LastName); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replace("<UNAME>",TemplatePlus_UserID); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replace("<EMAIL>",TemplatePlus_UserEmail); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replace("<CALL>",TemplatePlus_Callback); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replace("<INC>",TemplatePlus_INC); 
      TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replace("<CONFIGITEM>",TemplatePlus_ConfigItem); 

      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replace("<SDESC>",TemplatePlus_f_ShortDescription.value); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replace("<FNAME>",TemplatePlus_FirstName); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replace("<LNAME>",TemplatePlus_LastName); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replace("<UNAME>",TemplatePlus_UserID); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replace("<EMAIL>",TemplatePlus_UserEmail); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replace("<CALL>",TemplatePlus_Callback); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replace("<INC>",TemplatePlus_INC); 
      TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replace("<CONFIGITEM>",TemplatePlus_ConfigItem); 

      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replace("<SDESC>",TemplatePlus_f_ShortDescription.value); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replace("<FNAME>",TemplatePlus_FirstName); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replace("<LNAME>",TemplatePlus_LastName); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replace("<UNAME>",TemplatePlus_UserID); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replace("<EMAIL>",TemplatePlus_UserEmail); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replace("<CALL>",TemplatePlus_Callback); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replace("<INC>",TemplatePlus_INC); 
      TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replace("<CONFIGITEM>",TemplatePlus_ConfigItem); 
}); 
})();