【发布时间】:2015-09-10 12:16:37
【问题描述】:
关于这个主题有很多关于 SO 的问题,但我似乎找不到任何解决我的问题的方法,所以我决定问我的问题。我的情况是我有一个下拉列表,其中包含多个选项和iframe 内的文本区域。当用户在文本区域中选择一些文本并从下拉列表中选择一个选项时,所选文本将有一个a 标签环绕它,选项值将变为标签href。这是我的代码:
var optionTag = document.getElementById("option-id");
var optionValue = optionTag.options[optionTag.selectedIndex].value;
var iframe = document.getElementById("my-frame");
var iframeContent = iframe.contentDocument.body.innerHTML.split("<br>")[0];
//get user selected text
var iframeSelection = iframe.contentWindow.getSelection().toString();
// and wrap a tag around it then add href equal to value of option
var aTag = "<a href=\"" + optionValue + "\">" + iframeSelection +"</a>";
// replace user selected text with new a tag
iframe.contentDocument.body.innerHTML = iframeContent.replace(iframeSelection,aTag)
此代码工作,但它只替换第一个单词,如果该单词已经存在。例如:
lorem ipsum click dolor sit amet click spum
如果用户选择第二个单词“click”并选择一个选项,那么我的代码将替换唯一的第一个单词“click”,如果我有多个单词“click”它仍然只替换第一个单词,但如果用户选择单词“ipsum”或“lorem”然后它工作正常。我不知道如何解决这个问题请帮忙。谢谢!
p/s: 我不想替换所有的“点击”字,我只想替换用户选择的确切部分。
【问题讨论】:
-
能否也发布 HTML,我很难理解这个问题。
-
你能不能添加 HTML 并且更好的设置小提琴?
-
对不起。我无法访问 HTML 代码。例如,我有 10 个单词“单击”,我想手动选择每个单词,然后从下拉列表中选择一个选项,我的选项中的值将成为 href 属性。但是,如果我随机选择一个“点击”词并选择一个选项,那么它只会包装出现在我的段落中的第一个“点击”,并为第一个词添加标签加 href,而不是我当前选择的词。对不起,我的英语不好。
标签: javascript jquery