Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更改下一个跨距的文本_Javascript_Jquery_Sharepoint - Fatal编程技术网

Javascript 如何更改下一个跨距的文本

Javascript 如何更改下一个跨距的文本,javascript,jquery,sharepoint,Javascript,Jquery,Sharepoint,我的sharepoint网页中有以下标记,我无法控制这些标记:- <span dir="none"> <select id="OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_$DropDownChoice" title="Assign To Approver Required Field" class="ms-RadioText"> <option value="f**">f**</o

我的sharepoint网页中有以下标记,我无法控制这些标记:-

<span dir="none">
<select id="OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_$DropDownChoice" title="Assign To Approver Required Field" class="ms-RadioText">
<option value="f**">f**</option>
<option value="m**">m**</option>
<option value="m**">m**</option>
<option value="t**">t**</option>
<option value=""></option>
</select>
</span>
<br>
<span class="ms-metadata">AddSourceHere</span>
现在,我试图找到一种使用javascript或jquery的方法,动态地将选择列表之后的范围文本从AddSourceHere更改为其他内容

我想做的是:-

选择具有特定id的选择列表 选择下一个跨度 更改跨距文本。 我试图找到一种使用javascript或jquery的方法,来动态更改选择列表后面的span文本

如果您的标题文本在性质上是唯一的

$("select[title='Assign To Approver Required Field']").nextAll('span').text('whatever you like')

假设ms元数据类只有一个跨度,并且/或者您只关心该类的第一个跨度

Javascript:

document.getElementsByClassName('ms-metadata')[0].innerHTML = 'something else';
jQuery:

$('.ms-metadata').first().text('something else');

您只需按id查找下拉列表,然后使用nextAll查找跨度

$'OrderAssignment to Approver_9002e96d-1276-4355-9a2a-0c565d8079db\\\\$DropDownChoice' .家长“span” .nextAll'span.ms元数据:eq0' .text一些新的值; f** m** m** t**
AddSourceHere根据您希望如何构造代码以及您愿意接受的依赖关系,可以采用多种方法来实现这一点。使用jQuery:

取决于跨度的类别

取决于以下选项:

您甚至可以将这两者结合起来,使之更具体:

$('select.ms-radioText').sibling('.ms-metadata').text('something else')
这些只是基于您向我们展示的内容的示例。还有其他一些方法,但哪种方法合适取决于代码的其余部分

编辑:

根据您更新的问题,这是做您需要的事情的最直接的方法,再次使用jQuery。将文本指定给变量newText注意,$字符带有两个向前斜杠,如\\$


您已经在注释中指出select元素上的ID可以信任,但是还有其他不应该更改的.ms元数据元素,因此我们不能仅依赖于该类

这其中有三、四个部分需要注意:

您的ID包含$,需要在jQuery选择器中作为\\$ 这些元素不是同级元素,因此下一步无法从到进行遍历。而是使用nextAll 使用eq:0或first防止下一个安装溢出到以下所有跨距中 您已经更改了HTML结构,因此请添加.parent以进行补偿 行动中的一个例子:

$OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db\\\$DropDownChoice//选择元素 .parent//爬到父跨度 .nextAll'span.ms元数据:eq0'//获取以下第一个.ms元数据 .text“此文本已更改”//更改文本 f** AddSourceHere

这应该不会受到影响。请添加您的代码,我认为这与选择“$”.ms metadata.text'something'@DanielBeck有关。但是有很多元素都有。ms metadata类OK,这在问题中值得一提。你能相信上的ID不会更改吗?我尝试了你的方法,但是跨度的文本没有更新…我还检查了控制台,发现没有任何错误我已经更新,我没有注意到中间有一个br标记,所以你必须使用下一个安装。这也没有更改跨度的文本!!我不需要根据“选择列表”值进行更新。现在,您提到的标记与我显示的标记不100%兼容。。因为有一位家长span@DanielBeck是的,更正代码没有从我的sidesign正确粘贴。是的,自您第一次发布以来也发生了变化。是的,这是我的错,我直接从firefox F12复制了代码,不确定为什么会这样做,但我不想基于ms元数据选择。我想基于选择列表id,我可以保证它是唯一的。这将引发以下异常异常异常=错误:语法错误,无法识别的表达式:OrderAssigntoApprover9002E96D-1276-4355-9a2a-0c565d8079db_$DropDownChoice问题是ID中的“$”。您可以通过使用两个正斜杠对其进行转义来解决此问题。我已经更新了答案以反映这一点。现在您提到的标记与我显示的标记不完全兼容。。因为有一个家长span..你能再次检查我的原始代码吗..谢谢span在我写这个答案时不在问题中;是的,我错误地在问题中添加了代码。。所以我用正确的标记进行了编辑
$('select.ms-radioText').nextAll('span').text('something else')
$('select.ms-radioText').sibling('.ms-metadata').text('something else')
 var selectID = "OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_\\$DropDownChoice";
 var newText = "something else";
 $("#"+selectID).nextAll('span:eq(0)').text(newText);