After playing around for a while, I came to realize that the for-loop
is not the problem, because if I replace the document.write line with
document.write(arrTags[i]+"<br/>");
I get all the words I enter displayed correctly.
And if I replace the document.write command with alert, the popup
shows the internal script rendered correctly, like so:
<script label="Add foo" title="Add foo">var
here=story.findContainingTiddler(place); if (here)
{tiddler=store.getTiddler(here.getAttribute("tiddler"))};
store.setTiddlerTag(tiddler.title,true,"foo"); </script><br/>
If I replace document.write with return, I get the first word rendered
correctly and can add it as a tag, but the other words are ignored.
Also, in this case JSLint reports "Strange loop".
The quotes are escaped correctly and I also escaped the internal
script tag (<\/script>).
I'm guessing it has to with the fact that the internal script calls on
the variable from the parent script. Any ideas?
w
On Feb 10, 12:46 am, "Mark S." <[email protected]> wrote:
> Its been awhile since I've written for TW. It looks to me that for
> starters, you may have some quotes escaped incorrectly.
>
> I believe that maybe this part
> ..."\">var here...
>
> should have been written/escaped like
>
> ..."\""+">var here...
>
> but my eyes were beginning to water ;-) There could be more.
>
> On a larger note, I'm pretty sure that using document.write is the
> wrong way to go about writing code for TW. It might work sometimes,
> but on the other hand it may end up writing some place you never
> intended. Maybe look through some of the various plugins to see what
> TW functions they use to write out stuff.
>
> Mark
>
> On Feb 9, 10:53 am, whatever <[email protected]> wrote:
>
> > Hi!
> > I've been playing around with scripts for adding tags to tiddlers.
> > I've figured out how to do it using fET-generated lists of tiddlers,
> > however, I'm having trouble with passing values through transclusion.
> > I've come up with the following (beware googlewrap):
>
> > <<tiddler AddTagsScriptsTEST/testscript with:"tool,device">>
> > <part testscript hidden>
> > <script>
> > var strTagList = "$1";
> > var arrTags = strTagList.split(",");
> > var i;
> > for (i=0;i<arrTags.length;i++) {
> > document.write("<script label=\"Add "+arrTags[i]+"\" title=\"Add
> > "+arrTags[i]+"\">var here=story.findContainingTiddler(place); if
> > (here) tiddler=store.getTiddler(here.getAttribute(\"tiddler\"));
> > store.setTiddlerTag(tiddler.title,true,\""+arrTags[i]+"\"); </
> > script><br/>");}
>
> > </script>
> > </part>
>
> > It should generate two links:
> > Add tool
> > Add device
>
> > On click, it would add the corresponding tag to the tiddler. Now, I
> > know that the script in the "document.write" line works, because I've
> > used it before, but I still get an error:
>
> > SyntaxError: unterminated string literal
> > ");}
>
> > </script>
>
> > I've tested it with JSLint (1), but it only reported:
> > Problem at line 5 character 1: document.write can be a form of eval.
>
> > I'm guessing the problem is in the first part, however, JavaScript is
> > not my strong suite, so if anyone has any suggestions, I'd be
> > grateful.
>
> > w
>
> > (1)http://www.jslint.com/
--
You received this message because you are subscribed to the Google Groups
"TiddlyWiki" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/tiddlywiki?hl=en.