How to hide a specific css class in form view

georgechen
Kilo Guru

Hi folks,

I have an embedded list in a form layout, in the list there is a '+' sign on the new row which is an indicator to the users that they can insert a new row, however, some of our clients consider this '+' sign is kind of confusing as they cannot click on it.

find_real_file.png

Therefore I have been understanding how to achieve this;   firstly I raised a community forum at https://community.servicenow.com/message/1242922?et=watches.email.thread#1242922   and it replied a approach of using "document.getElementById('pass the actual DOM Id').style.display="none";"

however, what I found is that the DOM id keeps changing each time when the form gets rendered.       Breaking the element down, I further found a class named 'list_edit_image icon-add btn disabled' would not change each time it loads (see screenshot below)

find_real_file.png

If manually set css code in my Chrome Debugger,

find_real_file.png

the '+' successful removes which is great!

find_real_file.png

So I tried to incorporate this css into an onLoad client script to fetch the class, and then attempt to set the style.display='none'

var x= document.getElementsByClassName("list_edit_image.icon-add.btn.disabled");

x.style.display='none';

this has failed, but when alerting the x object, it pops up

find_real_file.png

the object was found.   I also tested the x.length which returns 0

I am not sure if I am on the right track on this , but wondering if any one could advise.

Thanks in advance.

1 ACCEPTED SOLUTION

Raju Koyagura
Tera Guru

Change the wait time till you get the list.length value 1.



function onLoad() {



window.setTimeout(hideSign,5000); //wait to load embeded list on the form


function hideSign(){


var list=document.getElementsByClassName('list_odd list_row list_add');


//var list=document.getElementsByClassName('list_decoration');


alert(list.length);


for (var i = 0; i < list.length; i++) {


if(list[i].id)


document.getElementById(list[i].id+'_edit').style.display="none";


}


}


}


View solution in original post

15 REPLIES 15

Aakash Shah4
Tera Guru

Hello George,



This is also new form me, i guess but there is no harm in trying something.


Could you please try this class : list_decoration_cell col-control col-small col-center



I have taken the id class instead of I class.



Could you please try this in your client script



var x= document.getElementsByClassName("list_decoration_cell col-control col-small col-center");


x.style.display='none';


Thanks Aakash.   Though it doesn't hide the + sign as expected, but when popping up x.length, it returned 1 which I am onto this to see what this is about.




var x= document.getElementsByClassName("list_decoration_cell col-control col-small col-center");


alert (x.length);


x.style.display='none';



find_real_file.png


That sounds good. I am also unable to find why is it not hiding.


Any clue did you get from the above script?


Try this it worked for me



function onLoad() {



window.setTimeout(hideSign,3000); //wait to load embeded list on the form


function hideSign(){


var list=document.getElementsByClassName('list_odd list_row list_add');


//var list=document.getElementsByClassName('list_decoration');


alert(list.length);


for (var i = 0; i < list.length; i++) {


if(list[i].id)


document.getElementById(list[i].id+'_edit').style.display="none";


}


}


}