Hi, Every Guru,
I'd like to put a button on a page. When clicking the button, the
table below it gets selected so the user can do Ctrl C to copy the
entire table without using the mouse to select the table which can be
big. How do I do it using javascript? I tried:
<INPUT TYPE=Button NAME='Select' SIZE='10' VALUE='SelctTable'
onClick="document.MyTable.select();">
<table name = MyTable border=1>
<tr><td>This is the table</td></tr>
</table>
I got error "document.MyTable is null or not an object".
Could anyone help please? Thanks in advance!
Botao
|
|
0
|
|
|
|
Reply
|
botao
|
9/14/2004 8:13:33 PM |
|
Botao wrote:
> Hi, Every Guru,
>
> I'd like to put a button on a page. When clicking the button, the
> table below it gets selected so the user can do Ctrl C to copy the
> entire table without using the mouse to select the table which can be
> big. How do I do it using javascript? I tried:
>
> <INPUT TYPE=Button NAME='Select' SIZE='10' VALUE='SelctTable'
> onClick="document.MyTable.select();">
>
> <table name = MyTable border=1>
> <tr><td>This is the table</td></tr>
> </table>
>
> I got error "document.MyTable is null or not an object".
>
> Could anyone help please? Thanks in advance!
Use "" to surround the attribute values. It is almost always correct to
do so (and never incorrect afaik).
There is no 'name' attribute for the <table> tag in the HTML4.01 w3.org
standard. Use 'id' instead.
DOM Level 2 HTML only specifies select() for input and textareas.
Furthermore this won't do what you want it to do.
I have not seen any standard Javascript method of making selections.
--
Ben M.
|
|
0
|
|
|
|
Reply
|
Ben
|
9/14/2004 8:59:28 PM
|
|
Botao wrote:
> I'd like to put a button on a page. When clicking the button, the
> table below it gets selected so the user can do Ctrl C to copy the
> entire table without using the mouse to select the table which can be
> big. How do I do it using javascript?
You'll be able to do the selection by using so-called 'ranges,' which
are so far supported by IE4+ and Mozilla. The copy command can also be
performed, in IE by using execCommand and in Mozilla by using clipboard
helpers (which however require higher security privileges).
> I got error "document.MyTable is null or not an object".
That's because the way you try to get a reference to the table object
isn't correct, give a look at
<URL:http://www.jibbering.com/faq/faq_notes/alt_dynwrite.html#getEl>
> Could anyone help please? Thanks in advance!
<table id="trainOfThought">
<tr><td>As I Am</td></tr>
<tr><td>This Dying Soul</td></tr>
<tr><td>Endless Sacrifice</td></tr>
<tr><td>Honor Thy Father</td></tr>
<tr><td>Vacant</td></tr>
<tr><td>Stream Of Consciousness</td></tr>
<tr><td>In The Name Of God</td></tr>
</table>
<script type="text/javascript">
var Utils = {
NOT_SUPPORTED : {},
DOM : {
getElementWithId : function() {
var func=function(){return Utils.NOT_SUPPORTED;}
if(document.getElementById) {
func=function(id){
return document.getElementById(id);
}
} else if(document.all) {
func=function(id) {
return document.all[id];
}
}
return (this.getElementWithId=func)();
}
},
Ranges : {
create : function() {
var func=function(){return Utils.NOT_SUPPORTED};
if(document.body && document.body.createTextRange) {
func=function(){return document.body.createTextRange();}
} else if(document.createRange) {
func=function(){return document.createRange();}
}
return (this.create=func)();
},
selectNode : function(node, originalRng) {
var func=function(){return Utils.NOT_SUPPORTED;};
var rng=this.create(), method="";
if(rng.moveToElementText) method="moveToElementText";
else if(rng.selectNode) method="selectNode";
if(method)
func=function(node, rng){
rng=rng||Utils.Ranges.create();
rng[method](node);
return rng;
}
return rng=null,(this.selectNode=func)(node, originalRng);
}
},
Selection : {
clear:function() {
var func=function(){return Utils.NOT_SUPPORTED};
if(typeof document.selection!="undefined") {
func=function(){
if(document.selection && document.selection.empty) {
return (Utils.Selection.clear=function(){
if(document.selection)
document.selection.empty();
})();
}
}
} else if(window.getSelection) {
var sel=window.getSelection();
if(sel.removeAllRanges) {
func=function(){
window.getSelection().removeAllRanges();
}
}
sel=null;
}
return (this.clear=func)();
},
add : function(originalRng) {
var func=function(){return Utils.NOT_SUPPORTED};
var rng=Utils.Ranges.create();
if(rng.select) {
func=function(rng){rng.select();}
} else if(window.getSelection) {
var sel=window.getSelection();
if(sel.addRange) {
func=function(rng){window.getSelection().addRange(rng);}
}
sel=null;
}
return (this.add=func)(originalRng);
}
}
};
(function() {
var rng=Utils.Ranges.create();
var ele=Utils.DOM.getElementWithId("trainOfThought");
if(rng!=Utils.NOT_SUPPORTED && ele!=Utils.NOT_SUPPORTED) {
document.write(
"<form>"+
"<input type='button' value='Select!' onclick='"+
"Utils.Selection.clear();"+
"Utils.Selection.add("+
"Utils.Ranges.selectNode("+
"Utils.DOM.getElementWithId(\"trainOfThought\")"+
")"+
")"+
"'>"+
"<\/form>"
);
}
})();
</script>
HTH
Yep.
|
|
0
|
|
|
|
Reply
|
Yann
|
9/14/2004 9:52:33 PM
|
|
Yep,
Thanks much for your reply. Too bad the "range" is only supported in
IE4. So I guess there is no way in IE5 to do "selecting" using
javascript.
Botao
|
|
0
|
|
|
|
Reply
|
botao
|
9/15/2004 2:15:57 PM
|
|
Botao wrote:
> Thanks much for your reply. Too bad the "range" is only supported in
> IE4. So I guess there is no way in IE5 to do "selecting" using
> javascript.
There's a misunderstanding, Botao. I've written IE4+, which means *from*
IE4 onwards, so the script should also work on IE5, IE5.5 and IE6:-)
To test it by yourself, create a blank HTML file, copy-paste the code
I've provided, and run the HTML page into your favorite browser. If the
command button is visible, then this means that the script is supported
(even though, from a technical point of view, I could have been a bit
more precise when deciding whether to write the button).
Regards,
Yep.
|
|
0
|
|
|
|
Reply
|
Yann
|
9/15/2004 5:42:47 PM
|
|
Yann-Erwan Perio wrote:
<snip>
> var Utils = {
> NOT_SUPPORTED : {},
>
> DOM : {
> getElementWithId : function() {
^^
I suspect that the outermost function was intended to have an - id -
parameter.
<snip>
> }
> return (this.getElementWithId=func)();
<snip> ^^
- and that it should be passed on to the first execution of the inner
function.
Richard.
|
|
0
|
|
|
|
Reply
|
Richard
|
9/15/2004 5:57:29 PM
|
|
Richard Cornford wrote:
> I suspect that the outermost function was intended to have an - id -
> parameter.
Argh. You suspect well indeed:-(
(Well, you could also see that as a two-step-or-nothing init;-))
> - and that it should be passed on to the first execution of the inner
> function.
getElementWithId : function(id) {
var func=function(){return Utils.NOT_SUPPORTED;}
if(document.getElementById) {
func=function(id){
return document.getElementById(id);
}
} else if(document.all) {
func=function(id) {
return document.all[id];
}
}
return (this.getElementWithId=func)(id);
}
is now okay. Thanks for the correction.
|
|
0
|
|
|
|
Reply
|
Yann
|
9/15/2004 6:23:19 PM
|
|
"Botao" wrote in message
news:ff93a86a.0409150615.c088b71@posting.google.com...
> Thanks much for your reply. Too bad the "range" is only supported in
> IE4. So I guess there is no way in IE5 to do "selecting" using
> javascript.
If your concern is Windows IE, you can replace that entire pile
of obfuscating syntax with two lines:
var oControlRange = document.body.createTextRange();
oControlRange.moveToElementText(obj);
Look up moveToElementText. All you do is give it an object
reference to the table in the form of document.getElementById("tableID")
Brett
|
|
0
|
|
|
|
Reply
|
Brett
|
9/15/2004 10:16:38 PM
|
|
Thank you very much. It works!
Yann-Erwan Perio <y-e.perio@em-lyon.com> wrote in message news:<414888a2$0$17702$626a14ce@news.free.fr>...
> Richard Cornford wrote:
>
> > I suspect that the outermost function was intended to have an - id -
> > parameter.
>
> Argh. You suspect well indeed:-(
>
> (Well, you could also see that as a two-step-or-nothing init;-))
>
> > - and that it should be passed on to the first execution of the inner
> > function.
>
> getElementWithId : function(id) {
> var func=function(){return Utils.NOT_SUPPORTED;}
> if(document.getElementById) {
> func=function(id){
> return document.getElementById(id);
> }
> } else if(document.all) {
> func=function(id) {
> return document.all[id];
> }
> }
> return (this.getElementWithId=func)(id);
> }
>
> is now okay. Thanks for the correction.
|
|
0
|
|
|
|
Reply
|
botao
|
9/16/2004 5:09:56 PM
|
|
This code deos not work but the originanl works.
>>>return (this.getElementWithId=func)(id);<<<<
Yann-Erwan Perio <y-e.perio@em-lyon.com> wrote in message news:<414888a2$0$17702$626a14ce@news.free.fr>...
> Richard Cornford wrote:
>
> > I suspect that the outermost function was intended to have an - id -
> > parameter.
>
> Argh. You suspect well indeed:-(
>
> (Well, you could also see that as a two-step-or-nothing init;-))
>
> > - and that it should be passed on to the first execution of the inner
> > function.
>
> getElementWithId : function(id) {
> var func=function(){return Utils.NOT_SUPPORTED;}
> if(document.getElementById) {
> func=function(id){
> return document.getElementById(id);
> }
> } else if(document.all) {
> func=function(id) {
> return document.all[id];
> }
> }
> return (this.getElementWithId=func)(id);
> }
>
> is now okay. Thanks for the correction.
|
|
0
|
|
|
|
Reply
|
botao
|
9/16/2004 5:13:47 PM
|
|
Thanks again Yann-Erwan Perio.
Could I ask one more thing? How could I on top of you code, add copy
command to copy the selection. Then open an word or excel, paste the
selection to a excel or work doc?
Thanks in advance!
Botao
Yann-Erwan Perio <y-e.perio@em-lyon.com> wrote in message news:<414888a2$0$17702$626a14ce@news.free.fr>...
> Richard Cornford wrote:
>
> > I suspect that the outermost function was intended to have an - id -
> > parameter.
>
> Argh. You suspect well indeed:-(
>
> (Well, you could also see that as a two-step-or-nothing init;-))
>
> > - and that it should be passed on to the first execution of the inner
> > function.
>
> getElementWithId : function(id) {
> var func=function(){return Utils.NOT_SUPPORTED;}
> if(document.getElementById) {
> func=function(id){
> return document.getElementById(id);
> }
> } else if(document.all) {
> func=function(id) {
> return document.all[id];
> }
> }
> return (this.getElementWithId=func)(id);
> }
>
> is now okay. Thanks for the correction.
|
|
0
|
|
|
|
Reply
|
botao
|
9/16/2004 5:17:16 PM
|
|
Botao wrote:
> Could I ask one more thing? How could I on top of you code, add copy
> command to copy the selection. Then open an word or excel, paste the
> selection to a excel or work doc?
In a normal security environment this is not possible, and you haven't
stated in which environment you're working. I suspect you're intending
the code for an IE-based intranet, though.
There can be a big difference between Internet scripting and Intranet
scripting. When designing for the Web, you have to take into account
that the runtime environment cannot be known for sure (there are more
than 100 browsers available), and that the script will fail inevitably
on some user agents. You therefore need to use a very defensive coding
approach, so that the script works fine on supporting platforms, and
fails silently on others (concept of clean degradation) - the original
script was coded in this perspective, which added a complexity overhead
(all the more the ranges' models differ greatly between IE's and W3C's).
On the other hand, coding for an intranet enables simpler approaches and
extended functionalities, since:
- you know the user agent,
- you know that javascript is enabled,
- you know that the security settings are high enough to use external
components (namely for IE, ActiveX).
This can simplify things greatly; see below (script intended for IE5+
with high security settings).
<table id="foo">
<tr><td>Java</td></tr>
<tr><td>Pizza</td></tr>
<tr><td>Nice</td></tr>
</table>
<form>
<input type="button" value="=> Excel/Word" onclick="bar('foo')">
</form>
<script type="text/javascript">
function bar(nodeId) {
var node=document.getElementById(nodeId);
var rng=document.body.createTextRange();
var xl, wd;
//first select
rng.moveToElementText(node);
rng.select();
//then copy
document.execCommand("copy");
//transfer to Excel
xl=new ActiveXObject("Excel.Application");
xl.visible=true;
with(xl.Workbooks.Add().Sheets(1)){
Cells.NumberFormat="@";
Paste();
Cells.NumberFormat="general";
}
//transfer to Word
wd=new ActiveXObject("Word.Application");
wd.visible=true;
wd.Documents.Add().Range().Paste();
}
</script>
|
|
0
|
|
|
|
Reply
|
Yann
|
9/16/2004 7:14:35 PM
|
|
Hi Botao,
Try this:
<table name="whatever" id="theTable">
Then go on with the rows, columns and content as you most likely have done.
In your JavaScript create a function, say:
function selectTable(){
var myTable = document.getElementById("theTable");
myTable.focus();
}
It may work, but I can't guarantee it.
Chris
Botao wrote:
> Hi, Every Guru,
>
> I'd like to put a button on a page. When clicking the button, the
> table below it gets selected so the user can do Ctrl C to copy the
> entire table without using the mouse to select the table which can be
> big. How do I do it using javascript? I tried:
>
> <INPUT TYPE=Button NAME='Select' SIZE='10' VALUE='SelctTable'
> onClick="document.MyTable.select();">
>
> <table name = MyTable border=1>
> <tr><td>This is the table</td></tr>
> </table>
>
> I got error "document.MyTable is null or not an object".
>
> Could anyone help please? Thanks in advance!
>
> Botao
|
|
0
|
|
|
|
Reply
|
Antonie
|
9/19/2004 3:03:57 AM
|
|
I'd like to thank Yann-Erwan Perio very much for posting the code
here. That helps a lot. You are a genius! Thanks again for sharing!
Botao
|
|
0
|
|
|
|
Reply
|
botao
|
9/22/2004 8:18:35 PM
|
|
|
13 Replies
77 Views
(page loaded in 0.206 seconds)
Similiar Articles: On select Radio Button / Change Combo box values - comp.lang ...Upon clicking r1, combo1's option value will be changed to values of arr1, etc ... On select Radio Button / Change Combo box values - comp.lang ... hide the input box or ... A2010 Query property sheet - comp.databases.ms-accessI create a new query in A2010 and add a table. If I right-click in the table area and select Property sheet or press the button for Property shee... how to put JTextfield and JButton in a cell of JTable - comp.lang ...... the problem is we need to enter the data in textfield for that > value button as a look up . when click button it wil dispalys a > window. > when click on table ... how to increase rows of a textarea - comp.lang.javascript ...... of addRows is clicked. like,if i have 2 rows in a textarea then after clicking a button the ... background color of table rows with \pause - comp.text.tex ... How to Alternate ... How to check object(button) exist in webpage or not - comp.lang ...... application. and wanna..*>.. use QTP to check>whether the button ... SELECT privilege on the SYS.V_$SESSION table and see if that works. ORA-00942 table or view does not ... change background color of a table view - comp.databases.ms-access ...ttk::button and dynamic image - comp.lang.tcl change background color of a ... The table is one of ... then single-click on your table to select it. After doing so, change ... Enable Textbox when radio button selected - comp.lang.javascript ...web database submit button - click once - help - comp.databases ..... that is getting a ... You can make adjustments as needed then select the ... Div tag Hide and ... How to call Save As Dialog by using Script ??? - comp.lang ...I have a Button and when i click that button,I need to open the File ... Genearl Save AS Dialog) through Which i have to select the Image Path. When I press the OK Button of ... JTable Problem - values not set when clicked on button - comp.lang ...I have a frame with a table in it and when ... JTable row - comp.lang.java.gui If you click the edit image (button ... Single Interval Selection" radio button, you can select a ... Radio button in MATLAB GUI - comp.soft-sys.matlabUse WM_DRAWITEM to change a buttons ... On select Radio Button / Change Combo ... ... Program GUI Components :: Code a Programmatic GUI (MATLAB®) Clicking the button ... Toggle Button VBA code on Subform - comp.databases.ms-access ...The row source for the County (Combo3) is, SELECT DISTINCTROW Counties.[County ... See if this works in the code behind like say a button click: Private Sub btn1_Click ... where do I find the UsysRibbon table to add a custom ribbon - comp ...... property sheet - comp.databases.ms-access I create a new query in A2010 and add a table. If I right-click in the table area and select Property sheet or press the button ... How to randomly generate text field contents from list when ...- use some script loop: goto companies select all records goto first ... I have a script that creates a new record in the Transactions table when a button is pushed. Export HTML table inside JSP to Excel using Java - comp.lang.java ...... me to.Is it a good idea to generate the Excel file (as temporary file whichto be sent back to browser later if user click the button) at the sametime when the HTML table ... How to Save Records with Only Buttons I create, and prevent ...... the way I would approach this would be to put an "Edit" flag field in the table. ... of either 1 or 0. 1 allows the editing to take place) The user would click a button to ... How to Select an Entire Word Table, Columns, Rows, or Groups of ...Alternatively, you can also select a Word table by clicking Table on the menu bar, then ... Then click your left mouse button to select the row. You'll know that a ... How to Format a Table in Word 2010 - For DummiesUsing Quick Styles: The Table Styles group can quickly apply formatting to any table. Choose a style or click the menu button to see a whole smattering of styles. 7/10/2012 2:09:51 PM
|